shell脚本以递归方式遍历文件

时间:2010-07-27 12:36:22

标签: shell scripting file

我需要一些帮助来创建一个shell脚本来对文件夹中的每个文件运行一个特定的命令(any),以及递归地潜入子目录。

我不确定如何开始。

正确方向上的一点就足够了。谢谢。

5 个答案:

答案 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

并且,在支持空分离的findxargs的实现上:

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