如何删除目录中一半的连续编号文件?

如何删除目录中一半的连续编号文件?

一个目录中的文件名称以 001 到 100 结尾。如何删除 2、4、6、8...100。这可以写成脚本吗?一旦目录有一周的历史,就必须运行此脚本。一个月后再次运行。目标是删除一半不是最近的数据。

答案1

您可以使用带有步骤的 bash for 循环(如果是 bash v4)

所以

#!/usr/bin/bash

cd /path/to/directory/

for i in `ls *{0..100..2}`
do 
    rm $i
done

这可以放在你的 crontab 中,每周/每月运行一次

00 11 1 * * /path/to/script.sh 将在每月第一天上午 11 点运行

00 11 * * 1 /path/to/script.sh 将在每周一运行

答案2

像这样应该工作(现在无法测试,所以首先对重复数据进行测试) -

 find /path/to/directory -type f -name '*[02468].jpg' -delete

或使用rm-

 find /path/to/directory -type f -name '*[02468].jpg' -exec rm {} +

相关内容