繁体   English   中英

Linux:列出文件名(如果在日期间隔之间最后一次修改)

[英]Linux: List file names, if last modified between a date interval

我有2个变量,其中包含这样的日期:2001.10.10

我想将ls与过滤器一起使用,它仅列出文件,如果最后一次修改是在第一和第二个日期之间

我能想到的最好的解决方案包括使用边界时间戳创建临时文件,然后使用find

touch -t YYYYMMDD0000 oldest_file
touch -t YYYYMMDD0000 newest_file
find -maxdepth 1 -newer oldest_file -and -not -newer newest_file
rm oldest_file newest_file

您可以使用-print0选项来find是否要从所有文件名中删除./

如果无法创建临时文件,则可以考虑编写脚本来计算和打印文件的生存期( 如此处所述) ,然后将其用作谓词。

抱歉,这不是最简单的。 我现在才开发它,仅适合您。 :-)

ls -l --full-time|awk '{s=$6;gsub(/[-\.]/,"",s);if ((s>="'"$from_variable"'") && (s<="'"$to_variable"'")) {print $0}}';

问题是,这些简单的命令行工具无法处理日期类型。 因此,首先我们将它们转换为整数,删除分隔的“-”和“”。 字符(您是“。”,我是“-”,所以我都删除了这两个字符,您可以在

gsub(/[-\.]/,"",s)

删除后,我们已经可以将它们与整数进行比较。 在此示例中,我们将它们与整数$ from_variable和$ to_variable进行比较。 因此,这将列出$ from_variable和$ to_variable之间修改的文件。

“ from_variable”和“ to_variable”都必须是环境变量,格式为20070707(适用于2007年7月7日)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM