我需要一些帮助来创建一个shell脚本来对文件夹中的每个文件运行一个特定的命令(any),以及递归地潜入子目录。
我不确定如何开始。
正确方向上的一点就足够了。谢谢。
答案 0 :(得分:8)
要将命令(例如echo
)应用于当前路径下的所有文件,请使用
find . -type f -exec echo "{}" \;
对于目录,请使用-type d
答案 1 :(得分:7)
您应该查看find
命令。
例如,要更改/tmp
目录下所有JPEG文件的权限:
find /tmp -name '*.jpg' -exec chmod 777 {} ';'
虽然,如果有很多文件,你可以将它与xargs
结合起来批量处理,例如:
find /tmp -name '*.jpg' | xargs chmod 777
并且,在支持空分离的find
和xargs
的实现上:
find /tmp -name '*.jpg' -print0 | xargs -0 chmod 777
答案 2 :(得分:2)
以递归方式列出所有文件
find . -name '*'
然后举个例子,你想在每个文件上'grep'然后 -
find . -type f -name 'pattern' -print0 | xargs -0 grep 'searchtext'
答案 3 :(得分:2)
Bash 4.0
#!/bin/bash
shopt -s globstar
for file in **/*.txt
do
echo "do something with $file"
done
答案 4 :(得分:0)
在bash脚本中,您可以通过以下方式查看“查找”命令的结果:
for F in `find . -type f`
do
# command that uses $F
done