Regex unix查找的文件名在字典上小于给定文件名
我有一个目录中的文件列表,由系统自动生成,文件名中有日期。例如:Regex unix查找的文件名在字典上小于给定文件名,regex,shell,unix,find,Regex,Shell,Unix,Find,我有一个目录中的文件列表,由系统自动生成,文件名中有日期。例如:audit\u 20111020,audit\u 20111021,audit\u 20111022,等等 我想清理超过18个月的文件,因此我想组合一个unix find命令,该命令将查找小于audit\u 20100501的文件并将其删除 有人知道如何在find命令中使用字典顺序作为标准吗?使用Perl很容易。键入perl和: for (glob "*") { my($n) = /(\d+)/; unlink if ($n
audit\u 20111020
,audit\u 20111021
,audit\u 20111022
,等等
我想清理超过18个月的文件,因此我想组合一个unix find命令,该命令将查找小于audit\u 20100501
的文件并将其删除
有人知道如何在find命令中使用字典顺序作为标准吗?使用Perl很容易。键入
perl
和:
for (glob "*")
{
my($n) = /(\d+)/;
unlink if ($n < 20100501);
}
^D
for(glob“*”)
{
我的($n)=/(\d+)/;
取消if的链接($n<20100501);
}
^D
使用前测试。请注意,我假设这是一种固定格式,并且目录仅包含这些文件另一个Perl变体:
perl -E'while(<audit_*>) { say if /(\d{8})/ && $1 < 20100501}'
perl-E'while(){say if/(\d{8})/&&$1<20100501}'
如果打印预期的文件名,则用取消链接
替换say
注意:
可以使用排序
命令对的结果进行排序:
find . -name "audit*" | sort -n
。。。然后找到拆分此列表的方法
但是,对于您想要执行的操作,即删除比某个日期早的目录(18个月是~547天),您可以使用以下方法:
find -ctime -547 -type d | xargs -I{} rm -rf {}
使用“审计”*更安全。