我正在使用 Debian 10 Buster,并且我是 Linux 新手。永远不会太迟..
我正在收集图片,以便制作街对面建筑工地的长时间延时视频。
所有照片都在一个目录中,其中包括周六和周日拍摄的照片。
文件名的格式如下:
YYYY-MM-DD_HHMM.jpg
例子
2021-05-07_1012.jpg
现在我正在尝试删除周六和周日创建的图片。
在下面执行时(从此处的另一个线程)我可以列出周六和周日创建的所有文件:
find -type f -printf '%Ta\t%p\n' | egrep "^(Sat|Sun)" | cut -f 2-
问题是:如何将此行修改为删除语句以删除文件?
另一个选择可能是(我将文件存储在 nas 上)在将文件复制到我的工作目录时排除这些文件。
我使用 rsync 来复制文件。
提前致谢。
答案1
附加xargs rm
到命令中,这样我们就有:
find -type f -printf '%Ta\t%p\n' | egrep "^(Sat|Sun)" | cut -f 2- | xargs rm
将删除与您的搜索结果匹配的任何文件。您还可以用来rm -v
查看哪些文件被删除。
xargs
从标准输入读取项目,正如您在评论中所说,它可以与模式一起使用。然而,我们这里的模式是用find
、printf
和定义egrep
的cut
。
运行命令来定位文件后,会打印相对路径,但是当我们使用xargs rm
这些路径时,这些路径会被赋予rm
via xargs
,然后被删除。