unix 查找按字典顺序小于给定文件名的文件名

发布于 2024-12-11 18:24:12 字数 255 浏览 0 评论 0原文

我的目录中有一个文件列表,这些文件是由系统自动生成的,文件名中包含日期。一些示例是:audit_20111020audit_20111021audit_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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦罢 2024-12-18 18:24:12

另一个 Perl 变体:

perl -E'while(<audit_*>) { say if /(\d{8})/ && $1 < 20100501}'

如果打印预期的文件名,则将 say 替换为 unlink

注意:< 执行数值比较,如果需要字符串比较,请使用lt

Another Perl variant:

perl -E'while(<audit_*>) { say if /(\d{8})/ && $1 < 20100501}'

Replace say by unlink if it prints expected filenames.

Note: < performs numerical comparison, use lt if you want string comparison.

雾里花 2024-12-18 18:24:12

使用 Perl 就很容易了。输入 perl 并:

for (glob "*")
{
  my($n) = /(\d+)/;
  unlink if ($n < 20100501);
}
^D

使用前测试。请注意,我假设这是固定格式,并且目录仅包含这些文件

With Perl it's easy. Type perl and:

for (glob "*")
{
  my($n) = /(\d+)/;
  unlink if ($n < 20100501);
}
^D

Test before using. Note that I'm assuming this is a fixed format and the directory only contains these files

坐在坟头思考人生 2024-12-18 18:24:12

可以使用 sort 命令对 find 的结果进行排序:

find . -name "audit*" | sort -n

...然后找到一种方法来拆分此列表。


但对于您想要执行的操作,即删除早于特定日期(18 个月约为 547 天)的目录,您可以使用以下命令:

find -ctime -547 -type d | xargs -I{} rm -rf {}

It is possible to sort find's result using the sort command:

find . -name "audit*" | sort -n

... 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:

find -ctime -547 -type d | xargs -I{} rm -rf {}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文