我需要一个命令来从目录(和子目录)中删除所有小于 20MB 的文件

我需要一个命令来从目录(和子目录)中删除所有小于 20MB 的文件

除了某些文件扩展名外。(从视频目录中删除除字幕文件之外的垃圾文件)

答案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 

相关内容