我有时需要从一个大目录中获取一组特定的文件——最近,我需要在工作中从我们的Apache日志文件中获取一些特定的访问日志。
输入查找
。
我需要获取比特定日期更新的所有文件,并使用模式“sitename-access_log.timestamp.gz”。然后我需要将这些文件打包并抓取它们进行处理。所以,这就是我所做的:
-newerfilename
告诉find查找比filename
更新的文件。-regex
flag告诉find定位与正则表达式匹配的文件。然而,find使用的正则表达式有点奇怪,并且没有遵循我所知道的许多约定;一方面,假定您编写的模式将匹配整个字符串,而不仅仅是它的一部分。我最终使用的是-regex'.*access_log.*gz'
,它起作用了。-printf
标志告诉find格式化印刷。这在另一个程序中使用find的输出时很有用。例如,tar喜欢文件名列表……所以我使用了-printf"%p"
,它用空格分隔每个文件名。
然后我反引我的完整查找语句并将其用作atar命令的最后一个参数;瞧!包含我需要的文件的即时tar文件!