我想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
(在这种情况下使用确实没有任何优势)。