Linux 以任意深度遍历目录

Linux 以任意深度遍历目录,linux,loops,command-line,Linux,Loops,Command Line,我想对目录中所有级别上存在的所有文件执行一个命令。它可以有任意数量的文件和子目录。即使这些子目录也可能包含任意数量的文件和子目录。我想使用shell脚本来实现这一点。由于我是这个领域的新手,任何人都能给我建议一条出路。您可以使用使用通配符(*)的递归命令,如下所示: 如果要对单个文件应用命令,应使用“查找”命令并对其执行命令,如下所示: find yourdirectory -type f -exec echo "File found: '{}'" \; 它的作用是: 查找目录中的所有项目y

我想对目录中所有级别上存在的所有文件执行一个命令。它可以有任意数量的文件和子目录。即使这些子目录也可能包含任意数量的文件和子目录。我想使用shell脚本来实现这一点。由于我是这个领域的新手,任何人都能给我建议一条出路。

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

如果要对单个文件应用命令,应使用“查找”命令并对其执行命令,如下所示:

find yourdirectory -type f -exec echo "File found: '{}'" \;
它的作用是:

  • 查找目录中的所有项目yourdirectory
  • 具有类型f的文件也是如此
  • 对每个文件运行一个exec

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

如果要对单个文件应用命令,应使用“查找”命令并对其执行命令,如下所示:

find yourdirectory -type f -exec echo "File found: '{}'" \;
它的作用是:

  • 查找目录中的所有项目yourdirectory
  • 具有类型f的文件也是如此
  • 对每个文件运行一个exec
您可以在“|”(管道)之后使用带有“xargs”的命令“find”

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

find Documents -iname *.txt |xargs rm -f
帮助?

您可以使用命令“查找”,在“|”(管道)后面加上“xargs”

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

find Documents -iname *.txt |xargs rm -f
帮助?

使用查找:

find-type f-exec命令{}\

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

使用查找:

find-type f-exec命令{}\


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

注意,
find-exec
非常慢<代码>查找| xargs在大型文件集上要快得多。注意,
find-exec
非常慢<代码>查找| xargs在大型文件集上要快得多。如果我想在我想在所有文件上运行的命令中传递文件名呢?我相信我已经给了你答案了!xargs将应用任何您想要的命令。使用“-iname”选项查找将允许您传递文件名。现在必须输入一个脚本来捕获参数。您可以使用bash,接收带有“$1,$2,…”的参数$n'变量。例如:
startsearch=$1
filename=$2
,它们在上面的命令中使用$startsearch和$filename。你可以自己改进!非常感谢。如果我想在命令中传递文件名,我想在所有文件上运行。我相信我已经给了你答案!xargs将应用任何您想要的命令。使用“-iname”选项查找将允许您传递文件名。现在必须输入一个脚本来捕获参数。您可以使用bash,接收带有“$1,$2,…”的参数$n'变量。例如:
startsearch=$1
filename=$2
,它们在上面的命令中使用$startsearch和$filename。你可以自己改进!非常感谢你