BASH:如何清除清单中命名的文件之外的所有文件?
发布时间:2020-12-15 18:47:50 所属栏目:安全 来源:网络整理
导读:我有一个清单文件,它只是一个换行符分隔的文件名的列表.如何从文件夹中删除清单中未命名的所有文件? 我试图建立一个find ./! -name“filename”命令动态地: command="find ./ ! -name "MANIFEST" "for line in `cat MANIFEST`; do command=${command}"!
我有一个清单文件,它只是一个换行符分隔的文件名的列表.如何从文件夹中删除清单中未命名的所有文件?
我试图建立一个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 "%Pn"; cat MANIFEST MANIFEST; echo MANIFEST) | sort | uniq -u | xargs -r rm 注意我列出了两个MANIFEST,以防在那里列出的文件实际上不存在.还要注意以上支持子目录中的文件 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |