如何处理仅执行其子目录的命令?

如何处理仅执行其子目录的命令?

我正在寻找一种执行命令的方法,我只能在子目录下执行某些命令,而命令不会影响当前目录。

find -name ":RUN" -exec rm -rf {} \;

如果我得到的目录名称是 ,level0其子目录名称是level1。我在目录中运行上面的示例命令,level0然后不仅是level1目录,而且还level0受命令影响。

如何处理该命令仅影响执行level1时的目录level0

答案1

当你说

寻找   -某物 ……
你实际上是在说
寻找 。 -某物 ……
即,搜索开始于.(当前目录)。您只想在子目录中搜索,所以也可以
寻找 ./*/-name ":RUN" -exec rm -rf {} ;
这将找不到名称为首先 .。如果您想包含此类目录,并且您正在使用 bash,请先执行此操作shopt -s dotglob

PS 天真的,find */ -…相当于find ./*/ -…../*/如果存在名称开头的文件,则使用更安全-

答案2

尝试:

find . -path './*/*' -type d -name ':RUN' -exec echo rm -rf -- {} +

您也可以替换-path './*/*'为等效的-mindepth 2.

相关内容