循环遍历任何深度

时间:2016-10-21 12:02:11

标签: linux loops command-line

我想对目录中所有级别上的所有文件执行命令。它可以包含任意数量的文件和子目录。即使这些子目录也可能包含任意数量的文件和子目录。我想用shell脚本来做这件事。因为我是这个领域的新手,任何人都可以建议我出路。

3 个答案:

答案 0 :(得分:0)

您可以使用使用通配符(*)的递归命令,如下所示:

for dir in ~/dev/myproject/*; do (cd "$dir" && git status); done

如果要对单个文件应用命令,则应使用find命令并对其执行命令,如下所示:

find yourdirectory -type f -exec echo "File found: '{}'" \;

这是做什么的:

  • 查找目录 yourdirectory
  • 中的所有项目
  • 具有类型f - 所以是文件
  • 在每个文件
  • 上运行 exec

答案 1 :(得分:0)

您可以在“|”(管道)之后使用“find”命令和“xargs”。

示例:假设我要删除“Documents”目录中具有“.txt”扩展名的所有文件:

find Documents -iname *.txt |xargs rm -f

可帮助?

答案 2 :(得分:0)

使用find:

  

find -type f -exec COMMAND {} \;

-f仅将命令应用于文件,而不应用于目录。默认情况下,该命令是递归的。