我正在寻找一个 Linux 命令,可以获取当前目录及其子目录中所有超出特定大小的文件。
删除所有这些文件最简单的方法是什么?
我正在寻找一个 Linux 命令,可以获取当前目录及其子目录中所有超出特定大小的文件。
删除所有这些文件最简单的方法是什么?
与exec rm答案类似,但不需要为每个找到的文件启动一个进程:
find . -size +100k -delete
一行代码:
find . -size +100k -exec rm {} \;
第一部分(find . -size +100k
)查找当前目录(.
)下大小超过(+
)100 k字节(100k
)的所有文件。
第二部分(-exec rm {} \;
)在每个找到的文件上调用给定的命令。{}
是当前文件名(包括路径)的占位符。\;
只是命令结束的标志。
记得通过运行原始的find
来始终检查你的筛选条件是否正确:
find . -size +100k
或者,甚至在删除之前你可以制作一份备份副本:
find . -size +100k -exec cp --parents {} ~/backup \;
rm
是不可饶恕的!),所以我会点赞这个建议。 - warshipPython已经安装在所有基于Unix的操作系统上,那么为什么不使用它来代替Bash?
我总是觉得与awk和sed相比,Python更易读。
这是我会写的Python代码:
import os
Kb = 1024 # Kilo byte is 1024 bytes
Mb = Kb*Kb
Gb = Kb*Kb*Kb
for f in os.listdir("."):
if os.stat(f).st_size>100*Kb:
os.remove(f)
这是使用python -c
的一行版本:
python -c "import os; [os.remove(f) for f in os.listdir('.') if os.stat(f).st_size>100*1024]"
如果您想递归应用搜索,请参见此处。