如何迭代Bash中的目录中的文件?

时间:2014-08-09 00:07:23

标签: bash

我试图遍历目录中的文件列表,加密它们,然后使用bash将它们移动到其他位置。以下是我到目前为止的情况:

for filename in /home/anthony/documents_preprocessed; do 
    gpg --encrypt --recipient anthony@mydomain.org $filename
    mv /home/anthony/$filename /home/anthony/Documents
done

据我了解,这应该可行,但我对bash脚本编写起来相当新。当我运行它时,它永远不会加密,它只是将文件移动到文档目录。

谁能告诉我这样做的正确方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:3)

使用glob扩展目录中的所有文件:

for filename in /home/anthony/documents_preprocessed/*; do 
    gpg --encrypt --recipient anthony@mydomain.org "$filename"
    mv "/home/anthony/$filename" /home/anthony/Documents
done

你可以而且应该首先shopt -s nullglob,如果没有匹配的文件,这将使循环运行0而不是1次。

PS:shellcheck自动指出这样的常见问题。