我有一个包含几个文件的文件夹;我喜欢保持我的文件夹清除任何可能最终存在的杂散文件。这些迷路文件可能包括自动生成的备份文件或日志文件,但可能很简单,因为有人意外保存到错误的文件夹(我的文件夹)。
如果我能创建一个只保留大量指定文件(按名称和位置)但删除“list”上没有的任何内容的批处理文件,那么我必须知道所有这些。
答案 0 :(得分:2)
[edit]很抱歉,当我第一次看到问题时,我看到了bash
而不是batch
。我没有删除不那么有用的答案,因为在评论中指出可以用cygwin完成。
您可以列出文件,排除要保留的文件,并将其提交给rm。
如果所有文件都在一个目录中:
ls | grep -v -f ~/.list_of_files_to_exclude | xargs rm
或目录树
find . | grep -v -f ~/.list_of_files_to_exclude | xargs rm
其中~/.list_of_files_to_exclude
是一个文件,其中包含要排除的模式列表(每行一个)
在测试之前,请制作备份副本并用rm
替换echo
以查看输出是否真的符合您的要求。
答案 1 :(得分:1)
文件生存的白名单是一个非常危险的概念。我强烈建议重新思考。
如果您必须这样做,我可以建议您实际执行它:
copy c:\backups\2011_04_07_11_52_04\*.cpp c:\original_dir
)。这样,你保留了所有非白名单的文件以防你搞砸了(你将在某个时候,相信我)你不必担心负面的逻辑在批处理文件中(删除所有 all 这些类型的文件),而不是使用更简单的选项(移回每个每个类型的文件)。 / p>