BASH:如何清除清单中命名的文件之外的所有文件?

前端之家收集整理的这篇文章主要介绍了BASH:如何清除清单中命名的文件之外的所有文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个清单文件,它只是一个换行符分隔的文件名的列表.如何从文件夹中删除清单中未命名的所有文件

我试图建立一个find ./! -name“filename”命令动态地:

command="find ./ ! -name \"MANIFEST\" "
for line in `cat MANIFEST`; do
    command=${command}"! -name \"${line}\" " 
done
command=${command} -exec echo {} \;
$command

文件仍然存在.

[注意]我知道这使用回声.我想检查我的命令在使用它之前.

解决方案:(感谢PixelBeat)

ls -1 > ALLFILES
sort MANIFEST MANIFEST ALLFILES | uniq -u | xargs rm

没有临时文件

ls -1 | sort MANIFEST MANIFEST - | uniq -u | xargs rm

两者都忽略文件是否排序/不.

使用 http://www.pixelbeat.org/cmdline.html#sets中的“设置差异”模式
(find ./ -type f -printf "%P\n"; cat MANIFEST MANIFEST; echo MANIFEST) |
  sort | uniq -u | xargs -r rm

注意我列出了两个MANIFEST,以防在那里列出的文件实际上不存在.还要注意以上支持子目录中的文件

猜你在找的Bash相关文章