我在文件系统中有两个完全不同的目录: /路径1/目录1/* /路径2/目录2/*
dir1 有一个子目录列表,dir2 有一个类似的子目录列表,其中一些也在 dir1 中
我想要一个可以使用当前在 dir1 中的子目录列表的命令,如果它们存在于 dir2 中,则删除它们。
我能够使用 find 命令输出子目录名称的列表,并像这样一起 sed:
找到 $PWD -maxdepth 1 -type d | sed -e 's\^/path1/dir1///g' 将输出: 子目录 1 子目录 2 子目录 3
但我不知道如何将其输入命令以从另一个位置(递归地)删除那些子目录。我需要使用 awk 或 xargs 还是什么?
最佳答案
听起来你想要这样的东西:
cd /path1/dir1; find . -type d -maxdepth 1 -mindepth 1 -exec rm -rf /path2/dir2/{} \;
将“rm -rf”替换为“echo”以在尝试之前查看它将删除哪些目录:-)
如果目录不存在,“-f”选项可以防止错误
某些版本的 find(GNU?)也有“-execdir”。你可以像这样使用它:
find /path1/dir -type d -maxdepth 1 -mindepth 1 -execdir rm -rf /path2/dir2/{} \;
关于linux - 根据另一个位置的目录列表从一个位置删除一堆目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11318828/