答案1
一次只处理一个文件吗?除非文件很多很多看着你正在做的事情至关重要。
如果他们住在dir1
、dir2
、 等:
for d in dir1 dir2 dir3; do
(cd $d; for f in `ls *.txt`; do frobnicate $f; done)
done
说明:外部for
遍历目录。在子地狱((...)
)中,我们进入目录,获取所有*.txt
文件的名称,frobnicate
依次获取每个文件的名称(内部for
),然后我们就是done
。由于内部作业位于子 shell 中,因此我们回到了开始的位置,并且可以转到下一个目录。
小心,如果任何目录或文件名包含空格或其他时髦字符,这将在您面前爆炸。它不会保存原始文件(以防frobnicate
破坏其内容),并且(显然)会删除它找到的任何已删除的文件。