unix 查找按字典顺序小于给定文件名的文件名
我的目录中有一个文件列表,这些文件是由系统自动生成的,文件名中包含日期。一些示例是:audit_20111020
、audit_20111021
、audit_20111022
等。
我想清理超过 18 个月的文件,因此我想将unix find 命令将查找小于 audit_20100501
的文件并删除它们。
有谁知道如何使用字典顺序作为 find 命令中的标准?
I have a list of files in a directory that are automatically generated by a system with the date in the filename. Some examples are: audit_20111020
, audit_20111021
, audit_20111022
, etc.
I want to clean up files older than 18 months therefore I want to put together a unix find command that will find files less than audit_20100501
and delete them.
Does any know how to use lexicographical order as a criteria in the find command?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
另一个 Perl 变体:
如果打印预期的文件名,则将
say
替换为unlink
。注意:
<
执行数值比较,如果需要字符串比较,请使用lt
。Another Perl variant:
Replace
say
byunlink
if it prints expected filenames.Note:
<
performs numerical comparison, uselt
if you want string comparison.使用 Perl 就很容易了。输入
perl
并:使用前测试。请注意,我假设这是固定格式,并且目录仅包含这些文件
With Perl it's easy. Type
perl
and:Test before using. Note that I'm assuming this is a fixed format and the directory only contains these files
可以使用
sort
命令对find
的结果进行排序:...然后找到一种方法来拆分此列表。
但对于您想要执行的操作,即删除早于特定日期(18 个月约为 547 天)的目录,您可以使用以下命令:
It is possible to sort
find
's result using thesort
command:... then find a way to split this list.
But for what you want to do, i.e. delete directories older than a certain date (18 months is ~547 days), you could use the below instead: