将许多二进制文件转换为 ASCII 的脚本

将许多二进制文件转换为 ASCII 的脚本

我想convert.py在 30 个左右的*.gz文件上运行一个脚本,比如(将二进制转换为 ascii,但输出到 stdout),但输出不是到达屏幕,而是到达一个 *.txt 文件,类似于:

convert.py jonny.gz > jonny.txt

我该如何使用for循环或find命令来实现这一点?

答案1

简单for循环:

for f in ./*.gz; do
    convert.py "$f" > "${f%.gz}.txt"
done

使用find命令:

find . -maxdepth 1 -name '*.gz' -exec sh -c 'convert.py "$1" > "${1%.gz}.txt"' sh {} \;

或者

find . -maxdepth 1 -name '*.gz' -exec sh -c '
  for f; do convert.py "$f" > "${f%.gz}.txt"; done
' sh {} +

find(在这种情况下使用确实没有任何优势)。

相关内容