【发布时间】:2011-02-16 11:27:58
【问题描述】:
我有一个清单文件,它只是一个以换行符分隔的文件名列表。如何从文件夹中删除清单中未命名的所有文件?
我尝试动态构建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
两者都忽略文件是否已排序。
【问题讨论】:
-
谢谢大家!我将它提供给 pixelbeat,以获取他的解决方案的 shell 指南