通过扩展程序删除文件的最佳方法是什么?

时间:2017-06-15 14:32:58

标签: linux bash shell find

我正在寻找通过扩展名从目录中删除文件的最佳方法。 我打算按日期去做。但现在,我正在测试它是如何工作的。 这样:

dir=/tmp/backup/

mask="jpeg jpg png gif bmp pdf"

for i in $mask; do
find $dir -name "*.$i" -type f -delete
done

还是这个?

find $dir \( -name "*.jpeg" -o -name "*.jpg" -o -name "*.png" \
                 -o -name "*.gif" -o -name "*.bmp" -o -name "*.pdf" \) -type f -delete

我想用最少的机器和操作系统资源来做。也许你知道其他方法。因为我会删除一年的文件。它可以称之为滞后。感谢。

1 个答案:

答案 0 :(得分:4)

你可以使用:

# to ensure it doesn't return *.jpg if there is no .jpg file
shopt -s nullglob

# list all matching extension filea
echo *.{jpeg,jpg,png,gif,bmp,pdf}

如果您对输出感到满意,只需将echo替换为rm

即可

但是,如果您想使用变量,那么将所有扩展存储在变量中,然后使用find命令将其用于此:

mask="jpeg jpg png gif bmp pdf"

find . -type f -regextype posix-extended -regex ".*\.("${mask// /|}")"