删除 ~5k 以下的文件

删除 ~5k 以下的文件

我有12位董事:

/home/imp/hpt/boxes/110.110.2.0/
/home/imp/hpt/boxes/115.115.16.0
/home/imp/hpt/boxes/1.154.10.0/
/home/imp/hpt/boxes/44.100.0.0/
/home/imp/hpt/boxes/46.1.100.0/

/home/imp/hpt/outbound/
/home/imp/hpt/outbound.002/
/home/imp/hpt/outbound.02c/
/home/imp/hpt/outbound.02e/
/home/imp/hpt/outbound.06e/
/home/imp/hpt/outbound.073/
/home/imp/hpt/outbound.38f/

我想删除每个目录中小于 5k 的文件。这些文件是*.mo? *.tu? *.we? *.th? *.fr? *.sa? *su?从到 的? 数字09

我读过有关 的内容inotifywait,想知道是否可以用它来实现这一目标。是否可以?

谢谢。

编辑:好的,这是inotifywait我正在尝试编写的脚本.. 正如您所看到的,我并没有走得太远。

#!/bin/bash

dir1=/home/imp/hpt/boxes/110.110.2.0/
dir2=/home/imp/hpt/boxes/115.115.16.0/
dir3=/home/imp/hpt/boxes/1.54.10.0/
dir4=/home/imp/hpt/boxes/44.100.0.0/
dir5=/home/imp/hpt/boxes/46.1.100.0/
dir6=/home/imp/hpt/outbound/
dir7=/home/imp/hpt/outbound.002/
dir8=/home/imp/hpt/outbound.02c/
dir9=/home/imp/hpt/outbound.02e/
dir10=/home/imp/hpt/outbound.06e/
dir11=/home/imp/hpt/outbound.073/
dir12=/home/imp/hpt/outbound.38f/

inotifywait --daemon --outfile /home/imp/hpt/remove.log -m "$dir1" "$dir2" "$dir3" "$dir4" "$dir5" "$dir6" "$dir7" "$dir8" "$dir10" "$dir11" "$dir12" -e     delete |
    while read path action file; do
        for name in "$dir1'" "$dir2" "$dir3" "$dir4" "$dir5" "$dir6" "$dir7" "$dir8" "$dir9" "$dir10" "$dir11" "$dir12"

有人可以帮我吗?

答案1

find . \( -name '*.mo[0-9]' -o -name '*.tu[0-9]' \) -size -5120c -delete

您也可以使用size -5k,但find会进行一些愚蠢的舍入,因此不太精确:

但请记住,大小会向上舍入到下一个单位(因此 1 字节文件与 -size -1M 不匹配)

答案2

inotifyinotifywait实时监视文件系统操作。您可以使用它们来捕获创建的文件,但它们无法帮助您查找已存在的文件。

我假设您想查找现有文件。使用 GNU find,可以使用正则表达式模式稍微压缩查找它们的表达式:

$ find -type f -size -5120c -regextype awk -regex ".*\.(mo|tu|we|th|fr|sa|su)[0-9]" -delete

(大小5120以字节为单位,根据需要调整。)

相关内容