【问题标题】:Delete content of all folders with certain name删除具有特定名称的所有文件夹的内容
【发布时间】:2021-06-06 09:49:22
【问题描述】:

如何删除所有同名目录的内容?

我有一个目录结构,里面有很多 build 目录。我想删除它们的内容(所有文件和子目录),但保留目录本身(所以会有空的build 目录)。

我正在尝试调整此问题中提出的解决方案:How to remove folders with a certain name 但是在执行此命令后:

find . -name "build" -type d -exec rm -r "{}/*" \; 

我收到了回复(针对每个找到的匹配项)

rm: cannot remove './path/to/found/build/*': No such file or directory

当我直接打电话时

rm -r ./path/to/found/build/*

里面的所有文件都被删除(如预期的那样)

【问题讨论】:

    标签: linux command-line rm


    【解决方案1】:

    要扩展-exec rm -r "{}/*" 中的*,您需要运行shell 而不是直接执行rm,但使用此选项时必须注意不要引入命令注入漏洞。 (见https://unix.stackexchange.com/a/156010/330217

    另一种选择是使用-path 而不是-name

    find . -path '*/build/*' -exec rm -r "{}" \; -prune
    

    选项-prune是为了避免下降到之前已经被删除的目录。

    【讨论】:

      猜你喜欢
      • 2012-12-11
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      • 2018-06-21
      • 2019-01-03
      • 2012-09-19
      相关资源
      最近更新 更多