【发布时间】:2017-12-25 10:22:27
【问题描述】:
如果文件夹中有多个小于 10MB 的文件,我正在尝试编写一个脚本来删除最小的文件,但我没有成功。
在我的尝试中
find . -type f -size -10M -exec rm {} +
删除所有小于 10 MB 的文件,如果文件夹内有 2 个小于 10 MB 的文件,我只需要删除最小的递归。
谁能帮帮我?
【问题讨论】:
标签: linux bash shell scripting rm
如果文件夹中有多个小于 10MB 的文件,我正在尝试编写一个脚本来删除最小的文件,但我没有成功。
在我的尝试中
find . -type f -size -10M -exec rm {} +
删除所有小于 10 MB 的文件,如果文件夹内有 2 个小于 10 MB 的文件,我只需要删除最小的递归。
谁能帮帮我?
【问题讨论】:
标签: linux bash shell scripting rm
一个选项是循环通过find 的输出,然后跟踪文件的数量并跟踪最小的文件,所以最后你可以删除它:
#!/bin/bash
path=/path/to/dir # replace here with your path
while read -d '' -r dir;do
files_count=0
unset min
unset smallest_file
while read -d '' -r file;do
let files_count++
min_size="$(du -b "${file}"|cut -f1)"
min=${min:-"$min_size"}
smallest_file=${smallest_file:-"$file"}
if (( min_size < min ));then
min=$min_size
smallest_file=$file
fi
done < <(find "${dir}" -type f -size -10M -maxdepth 1 -print0)
if (( files_count >= 2 ));then
echo "$smallest_file"
#rm -v "$smallest_file"
fi
done < <(find "${path}" -type d -print0)
【讨论】:
find: 'smallest': No such file or directory 据我了解,它将删除所有这些中最小的。但如果此文件夹中有 >= 2 个大小小于 10MB 的文件,我只需要删除文件夹中最小的那个。
find 中的maxdepth 选项。