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