除了某些文件扩展名外。(从视频目录中删除除字幕文件之外的垃圾文件)
答案1
第一次运行
find . -type f ! -name '*.sub' ! -name '*.srt' -size -20M -print
检查它是否只匹配您想要的文件类型。我是一个长期的 unix 用户,我总是在要求任何命令删除任何内容之前这样做(拼写错误总是在最糟糕的时候发生)。然后编辑之前的命令行变为
find . -type f ! -name '*.sub' ! -name '*.srt' -size -20M -print0 | xargs -0 /bin/rm -f
并运行它。它应该会执行您想要的操作。! -name '*.srt'
如果您需要排除更多文件,可以多次重复此部分。请注意包含单引号:它们对于防止 shell 进行文件名扩展很重要。
答案2
这里:
find . -type f -name *.bak -size -20M -exec rm {} \;
您-name *.bak
正在寻找扩展名为“bak”的文件,-type f
正在寻找文件(而不是目录),-size -20M
为您提供所有小于 20MB 的文件(-size +20M
用于对大于 20MB 的文件进行反向搜索),并且-exec
您正在删除此搜索的结果。
答案3
find . -type f ! -name '*.ext' -size -20M -delete
比其他任何命令都更容易输入和记住。您必须记住 -delete 是位置相关的,并且会直接删除,无需进一步通知和垃圾箱。
但要小心,经常备份,并在删除前进行测试:
find . -type f ! -name '*.ext' -size -20M