linux - 根据另一个位置的目录列表从一个位置删除一堆目录?

标签 linux shell command-line

我在文件系统中有两个完全不同的目录: /路径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/

相关文章:

regex - 将包含子字符串 'foo' 的文件重命名为 'bar'

c - ALSA: snd_pcm_hw_params_free() 导致内存错误

linux - 如何在 Jenkins 中加密文件

python - 从 Linux RHEL 卸载 Python3.5

c - 带有格式化错误跟踪的日志宏

linux - Email命令的异常处理

java - 如何在 Windows 中的 MAVEN_OPTS 中设置启用断言和堆大小?

找不到 MySQL 命令 [MAMP]

scala - 以编程方式减少 spark shell 中的日志

c++ - 从命令行参数指定数组