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,以防在那里列出的文件实际上不存在.还要注意以上支持子目录中的文件

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...