循环子文件夹不能正常工作

时间:2012-03-22 19:12:24

标签: file bash unix loops

我有一个包含多个子文件夹的文件夹,每个子文件夹包含10-15个文件。我想只对这些文件夹中的文本文件执行某个操作。这些文件夹也包含其他类型的文件。现在,我只是想编写一个简单的for循环来访问每个文件。

for /r in *.txt; do "need to perform this on every file"; done

这给了我一个错误-bash: ``/R': not a valid identifier

感谢您的帮助。

P.S我在Win 7上使用 cygwin

3 个答案:

答案 0 :(得分:4)

你的/ r是问题,这不是一个有效的标识符(正如bash所说,你需要删除/)。此外,这不会递归到子目录。如果操作很简单,可以直接使用find的exec选项。 {}是文件名的占位符。

find . -name "*.txt" -exec ls -l {} \;

否则,尝试类似

的内容
for r in $( find . -name "*.txt" ) ; do
    echo $r
    #more actions...
done

答案 1 :(得分:2)

使用bash:

shopt -s globstar
for file in **/*.txt; do ...

答案 2 :(得分:1)

我会为你的应用案例使用“find”

这样的东西
find . -name "*.txt" -exec doSomeThing {} \;