【发布时间】:2015-06-16 03:20:26
【问题描述】:
我有一个文件,其中包含我要保留的目录名称列表。说 file1 其内容是目录的名称,如
- 目录 1
- dir2
- 目录3
另一方面,我的目录(实际目录)有像
这样的目录- 目录1
- dir2
- 目录3
- dir4
- 目录
我要做的是从我的目录中删除 dir4, dirs 和其他在 file1 上不存在其名称的目录。 file1 每行都有一个目录名。 dir4 和 dirs 下可能有需要递归删除的子目录或文件。
我可以使用 xargs 删除我的目录中列表中的文件
xargs -a file1 rm -r
但我不想删除,而是想保留它们并删除不在 file1 上的其他文件。可以的
xargs -a file1 mv -t /home/user1/store/
并删除我目录中的剩余目录,但如果有更好的方法,我正在徘徊?
谢谢。
【问题讨论】:
-
for x in */; do grep -q "$x" list_file || rm -rf "$x"; done? -
@anishsane 这会删除所有目录,尽管目录名称不在列表中。
-
我的错...我忘记了结尾的
/。试试这个:for x in */; do grep -q "${x%/}" list_file || rm -rf "$x"; done