You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用find命令删除子目录指定文件并需确认的问题

问题描述

需要删除/home下多个用户主目录中,所有位于l32子目录内的特定可执行文件fileToDelete,目录结构示例:

/home/usr1/folder/l32/fileToDelete
/home/usr1/folder/l32/dontDelete
/home/usr2/folderABC/l32/fileToDelete
/home/usr2/folderABC/l32/dontDelete
/home/usr3/folder/l32/fileToDelete
/home/usr3/folder/l32/dontDelete
/home/usr10/folderXYZ/whatever/l32/fileToDelete
/home/usr10/folderXYZ/whatever/l32/dontDelete

已通过以下命令成功定位目标文件:

find -type d -name "l32" -exec find {} -depth -type f -name fileToDelete -executable \;

但执行删除时遇到问题:

  • 使用以下命令报错rm:cannot remove './home/usr1/folder/l32': Is a directory:
    find -type d -name "l32*" -exec find {} -depth -type f -name fileToDelete -executable \; -exec rm -i {} \;
    
  • 使用rm -rfi {}会触发无关文件的确认操作,且需确认目录访问;
  • 尝试xargs同样无效:
    find -type d -name "l32*" -exec find {} -depth -type f -name fileToDelete -executable \; | xargs rm -i --
    

需求:仅删除目标可执行文件,且每个文件删除前需确认。

解决方案

错误原因

外层find匹配的是l32目录,后续-exec rm -i {} \;中的{}指代的是外层找到的目录,而非内层find定位的文件,因此出现删除目录的报错。

方法1:单层find直接定位(推荐)

无需嵌套find,直接通过路径匹配精准定位目标文件:

find /home -type f -path "*/l32/fileToDelete" -executable -exec rm -i {} \;

各参数说明:

  • /home:指定搜索起始目录,避免搜索当前目录的无关内容
  • -type f:仅查找文件(排除目录)
  • -path "*/l32/fileToDelete":匹配路径中包含/l32/fileToDelete的文件
  • -executable:过滤出可执行文件
  • -exec rm -i {} \;:对每个匹配到的文件,执行带确认的删除操作

方法2:嵌套find修正写法

如果坚持使用嵌套find,需确保rm作用于内层find找到的文件:

find /home -type d -name "l32" -exec find {} -type f -name "fileToDelete" -executable -exec rm -i {} \; \;

内层的-exec rm -i {} \;直接处理内层find输出的文件,外层的\;用于闭合外层find的-exec命令。

方法3:xargs安全写法

若要用xargs,推荐使用-print0和-0处理含特殊字符的文件名:

find /home -type d -name "l32" -exec find {} -type f -name "fileToDelete" -executable -print0 \; | xargs -0 rm -i --
  • -print0:让find用空字符分隔输出结果,避免文件名含空格时出错
  • xargs -0:读取空字符分隔的输入,对应-print0的输出
  • --:标记参数结束,避免文件名以-开头时被误判为选项

验证步骤

执行删除前,可先替换rm -i为ls,确认匹配的文件是否正确:

find /home -type f -path "*/l32/fileToDelete" -executable -ls

内容的提问来源于stack exchange,提问作者Alexander Unterrainer-DefconQ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:57:30