2017-06-15 98 views
2

我正在寻找从扩展名目录中删除文件的最佳方法。 我打算按日期去做。但现在,我正在测试它的工作原理。 此:通过扩展名删除文件的最佳方式是什么?

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 

我婉与机器和操作系统的五矿资源去做。也许你知道其他方式来做到这一点。因为我将删除一年前的文件。它可以调用滞后。谢谢。

回答

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} 

当您满意的输出,只是rm


但是更换echo,如果你想使用一个变量然后存储所有扩展

mask="jpeg jpg png gif bmp pdf" 

find . -type f -regextype posix-extended -regex ".*\.("${mask// /|}")" 
:在一个变量中,然后用 find命令使用这样
相关问题