我有一个文件,其中包含我想保留的目录名列表。比如说file 1,它的内容是目录名,如
- 目录1
- 目录2
- 目录3
另一方面,我的目录(实际目录)具有如下目录
- 目录1
- 目录2
- 目录3
- dir4
- 迪尔斯
我想做的是从我的目录中删除dir 4、dirs和其他名称在file 1中不存在的目录。file 1每行都有一个目录名。dir 4和dirs下可能有子目录或文件,需要递归删除。
我可以使用xargs删除My目录中列表中的文件
xargs -a文件1 rm -r
但我不想删除,而是想保留它们,并删除不在文件1上的其他文件。可以吗
xargs -文件1 mv -t /主目录/用户1/存储/
并删除我的目录中剩下的目录,但我徘徊,如果有更好的方法?
- 谢谢-谢谢
3条答案
按热度按时间7kqas0il1#
elcex8rz2#
Anish有一个很好的简单答案。如果你想要一些详细的东西来帮助你在未来进行数据操作或类似的事情,下面是一个详细的版本:
idv4meu83#
您可以使用grep排除目录:
-printf '%P\n'
用于从目录名中删除前导'./'来自
man find
,-printf
说明:%磷 文件的名称与发现其被移除的起始点的名称。
grep参数:
-f文件 从FILE中获取模式,每行一个。
-F 将PATTERNS解释为固定字符串,而不是正则表达式。
-x 只选择与整行完全匹配的匹配项。对于正则表达式模式,这类似于将模式括在括号中,然后用^和$将其括起来。
-v 反转匹配的意义,以选择不匹配的行。