gpt4 book ai didi

bash - 删除不在包含目录名称列表的文件中的目录

转载 作者:行者123 更新时间:2023-12-05 03:13:12 24 4
gpt4 key购买 nike

我有一个文件,其中包含我要保留的目录名称列表。比如说 file1,它的内容是目录的名称,例如

  • 目录 1
  • 目录 2
  • 目录3

另一方面,我的目录(实际目录)有类似

的目录
  • 目录 1
  • 目录 2
  • 目录3
  • dir4
  • 目录

我想做的是从我的目录中删除 dir4、dirs 和其他名称不存在于 file1 上的目录。 file1 每行有一个目录名。 dir4dirs 下可能有子目录或文件需要递归删除。

我可以使用 xargs 删除我的目录中列表中的文件

xargs -a file1 rm -r

但我不想删除,而是想保留它们并删除不在 file1 上的其他文件。可以做

xargs -a file1 mv -t /home/user1/store/

并删除我目录中剩余的目录但我在徘徊是否有更好的方法?

谢谢。

最佳答案

find . -maxdepth 1 -type d -path "./*" -exec sh -c \
'for f; do f=${f#./}; grep -qw "$f" file1 || rm -rf "$f"; done' sh {} +

关于bash - 删除不在包含目录名称列表的文件中的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30858216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com