如何获取超过一定大小的所有文件并删除它们

问题描述 投票:22回答:4
  1. 我正在寻找一个linux命令来从当前目录及其子目录中获取超过一定大小的所有文件。
  2. 什么是删除所有这些文件的最简单方法?
linux delete-file
4个回答
55
投票

类似于exec rm的答案,但不需要每个找到的文件的进程:

find . -size +100k -delete

14
投票

一内胆:

find . -size +100k -exec rm {} \;

第一部分(find . -size +100k)查找从当前目录(.)开始超过(+)100 kBytes(100k)的所有文件。

第二部分(-exec rm {} \;)在每个找到的文件上调用给定命令。 {}是当前文件名的占位符,包括路径。 \;只是标志着命令的结束。

请记住,通过运行原始find始终检查您的过滤条件是否正确:

find . -size +100k

或者,您甚至可以在删除之前制作备份副本:

find . -size +100k -exec cp --parents {} ~/backup \;

1
投票

zsh

ls -l *(Lk+100)   # list file size greater than 100kb

所以:

rm *(Lk+100)

更多zsh善良here


0
投票

python安装在所有基于unix的操作系统上,为什么不使用它而不是bash?

我总觉得python比awksed魔法更具可读性。

这是我写的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]"

如果您想以递归方式应用搜索,请参阅this

© www.soinside.com 2019 - 2024. All rights reserved.