【问题标题】:How to delete a specific folder in specific folders如何删除特定文件夹中的特定文件夹
【发布时间】:2017-05-24 11:11:58
【问题描述】:

使用

find . -name "*_develop-*"

我能够在当前目录中找到文件夹名称中包含_develop- 的所有文件夹,例如

myfolder_develop-abcd  
myfolder_develop-efgh

现在在这些找到的文件夹中,我想删除文件夹“temp”。
如何通过管道传递所需的命令以查看生成的文件夹,找到所需的文件夹然后将其删除?

【问题讨论】:

  • 您可以随时使用 grep 进行过滤,并使用 xargs 将结果传递给 rm -rf 命令。

标签: bash


【解决方案1】:

您可以使用-exec 选项在匹配文件夹上创建rm -rf 命令。

命令应该是这样的:

find . -name "*_develop-" -exec rm -rf  {}/tmp/ \;

{} 代表匹配文件夹,所以{}/tmp/ 代表匹配文件夹内的 tmp 文件夹

【讨论】:

  • temp 是develop文件夹内的一个文件夹,不是文件夹名称的一部分。
【解决方案2】:

你可以使用 -regex 标志

find . -regex '.*_develop-.*/temp' -type d -delete

或者如果是正下方的文件夹

find . -regex '.*_develop-[^/]*/temp' -type d -delete

【讨论】:

    【解决方案3】:

    将 find 与 xargs 一起使用

    find . -wholename "*_develop-*/temp" -print0 | xargs -0 rm -rf
    

    使用print0xargs -0 将空格替换为NULL 字符。如果某些目录名称中有空格,这很有用,因此 xargs 没有它会失败。

    您可以使用 find . -wholename "*_develop-*/temp" -delete,但如果 temp 目录不为空,则会失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-15
      • 2013-03-20
      • 1970-01-01
      • 2012-11-19
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 2022-08-17
      相关资源
      最近更新 更多