首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unix命令删除给定文件的兄弟级和父目录

Unix命令删除给定文件的兄弟级和父目录
EN

Stack Overflow用户
提问于 2022-03-20 02:00:31
回答 1查看 96关注 0票数 0

我有这样的目录结构

代码语言:javascript
复制
/home
   /dir-1
      some-file.php
   /dir-2
      sibling.php
      target-file.php
   /dir-3
   /dir-4
      other-sibling.php
      sibling.php
      target-file.php
   /dir-5
      target-file.php

我需要针对所有包含文件"target-file.php“的目录,并删除这些目录及其内容。在我的结构中,最终想要的结果是:

代码语言:javascript
复制
/home
   /dir-1
      some-file.php
   /dir-3

我正在努力:

代码语言:javascript
复制
rm -rf /home/*/target-file.php

但它只是删除该文件(target-file.php),而不是删除兄弟姐妹或父目录。

请帮帮忙

EN

回答 1

Stack Overflow用户

发布于 2022-03-21 03:08:26

用这个:

代码语言:javascript
复制
#!/bin/bash

find . -type f -name target-file.php -print0 | while IFS= read -r -d '' line
do
    echo "$line"
    /bin/rm -fr "$(dirname "$line")"
done

像这样使用files.

  • dirname使用find
  • 确保它能与所有的文件名一起工作(参见可以运行find . -type f -name target-file.php -print来查看files.
    • dirname的列表删除文件名,所以只剩下names.
    • /bin/rm -fr删除directories.
    • you可以注释echo行的目录,这只是显示正在处理的文件/目录)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71543497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档