Shell 有条件删除小于 xMB 文件的脚本

Shell script to delete files smaller than xMB with condition

如果文件夹中有多个小于 10MB 的文件,我正在尝试编写一个脚本来删除最小的文件,但我没有成功。

在我的尝试中

find . -type f -size -10M -exec rm {} +

删除所有小于 10MB 的文件,如果文件夹中递归地有 2 个小于 10MB 的文件,我只需要删除最小的文件。

谁能帮帮我?

一个选项是遍历 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)