我有一个包含多个子文件夹的文件夹,每个子文件夹包含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 。
答案 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 {} \;