【发布时间】:2011-03-21 14:16:22
【问题描述】:
在创建 shell 脚本以在文件夹中的每个文件上运行特定命令(任意)以及递归地深入子目录时,我需要一些帮助。
我不知道如何开始。
一个正确方向的点就足够了。谢谢。
【问题讨论】:
-
实际上有数百种方法可以做到这一点。最佳解决方案取决于您的目标,因此如果您愿意分享它,您可能会得到更好的答案。
在创建 shell 脚本以在文件夹中的每个文件上运行特定命令(任意)以及递归地深入子目录时,我需要一些帮助。
我不知道如何开始。
一个正确方向的点就足够了。谢谢。
【问题讨论】:
递归列出所有文件
find . -name '*'
比如说你想在每个文件上“grep” -
find . -type f -name 'pattern' -print0 | xargs -0 grep 'searchtext'
【讨论】:
-name '*' 不是您想要的。它应该是 -type f 以仅匹配文件。要执行命令,请使用-exec,而不是管道。
/dev/urandom 可能需要一段时间 ;-) 我建议添加 -type f
grep -R ;-)
要将命令(例如,echo)应用于当前路径下的所有文件,请使用
find . -type f -exec echo "{}" \;
对于目录,使用-type d
【讨论】:
重击 4.0
#!/bin/bash
shopt -s globstar
for file in **/*.txt
do
echo "do something with $file"
done
【讨论】:
在 bash 脚本中,您可以通过以下方式查看“查找”命令的结果:
for F in `find . -type f`
do
# command that uses $F
done
【讨论】: