我想删除目录中除 .png 文件之外的所有文件。我只想保留图片,并删除其他所有内容。
像这样的事情显然是行不通的:
for file not in *.png;
do
rm $file
done
我该怎么做?我还想知道如何使用文件名中的自定义字符串(而不仅仅是扩展名)来执行此操作。
答案1
在带有 set 的 bash 中,extglob
您可以使用负匹配:
shopt -s extglob # often a default, could be already set
rm *.!(png)
rm !(*keep*|*save*) # everything except files with "keep" or "save" in their name
看这里了解血腥细节。
答案2
这相当于使用find
并否定匹配选项。我强烈建议先测试结果-delete
。
find . -maxdepth 1 -type f -not -name "*.png" -delete