2017-05-26 52 views
0

我正在制作Timelapse视频,但相机正在拍摄很多照片(最高时间为1pic/60秒,但我只需要1pic/h)。所以我想保留每一张第60张照片并删除其余的文件。删除每个第X个文件Linux脚本

是否有一个bash脚本或简单的命令来实现这个目录?

+0

什么是文件名,你如何确定哪个是第n个文件? – 123

+0

想想像使用cmin和delete标志一样使用find –

回答

1

答:

find . -maxdepth 1 -type f -printf "%T+\t%p\n" | sort | cut -f 2 | awk 'NR % 60 != 0' | xargs -d '\n' rm -f


说明:

find . -maxdepth 1 -type f -printf "%T+\t%p\n" - 查找所有常规文件在当前目录. -maxdepth 1)(-type f,并打印出文件的修改时间和文件名,用TAB分隔,每个文件一行(-printf "%T+\t%p\n"

sort - 按升序对结果列表进行排序(因为修改时间在行首,这意味着最早的文件在第一行)。使用-r以相反的顺序

cut -f 2排序 - 从列表中删除的修改时间,只保留了文件名(第二个字段列表)

awk 'NR % 60 != 0' - 从结果列表

删除了每个60线

xargs -d '\n' rm -f - 因为这是在列表中

最终的结果是,每60文件不会被删除,在当前目录中的所有其他常规文件被删除留下的每一行执行rm -f。使用您自己的风险:)