Unix shell循环检查一个目录是否存在于多个目录中

发布于 2025-01-12 10:11:26 字数 542 浏览 0 评论 0原文

我的文件夹结构如下:(

/home/
   /folder1/
      /backup/
   /folder2/
      /backup/
   /folder3/
   /folder4/
      /backup/
   /folder5/

如您所见,并非所有 folder 目录都有子目录 backup

我需要检查目录 backup 是否> 存在于文件夹中并将其删除。

我正在使用这个命令:

for d in /home/* ; 
    do [ -d "$d/backup" ]
    && echo "/backup exists in $d" 
    && rm -rf "$d/backup" 
    && echo  "/backup deleted in $d" ; 
done

但它不起作用。接下来我可以尝试什么?

I have folder structure like this:

/home/
   /folder1/
      /backup/
   /folder2/
      /backup/
   /folder3/
   /folder4/
      /backup/
   /folder5/

(As you can see, not all folder directories have a subdirectory backup)

I need to check if the directory backup exists in the folders and delete it.

I am using this command:

for d in /home/* ; 
    do [ -d "$d/backup" ]
    && echo "/backup exists in $d" 
    && rm -rf "$d/backup" 
    && echo  "/backup deleted in $d" ; 
done

But it is not working. What can I try next?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

有深☉意 2025-01-19 10:11:26
find . -type d -name "backup" -delete -print

显然,备份目录下的所有内容都会丢失。

这将递归到您的目录中。如果您需要将其限制为仅第一级,您可以这样做:

find . -maxdepth 1 -type d -name "backup" -delete -print

两个命令都会打印已删除的目录。没有输出==没有找到目录,什么也没做。

最后,您希望避免像您尝试的那样在文件或目录名称上循环,因为您可能有名称中包含空格的文件或目录。完整的讨论和解决方案可以在这里找到:https://mywiki.wooledge.org/BashFAQ/001

find . -type d -name "backup" -delete -print

Obviously, all content under backup directories will be lost.

This will recurse down into your directories. If you need to limit it to only the first level, you can do:

find . -maxdepth 1 -type d -name "backup" -delete -print

Both commands will print the deleted directories. No output == no directory found, nothing done.

Lastly, you want to avoid looping on files or directory names like you attempted, since you might have files or directories with spaces in their names. A complete discussion and solutions are available here: https://mywiki.wooledge.org/BashFAQ/001

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文