按日期按bash排序文件列表

时间:2014-10-26 16:59:10

标签: bash sorting datetime

给定一个包含一些文件列表的文本文件,例如

$ cat file_list.txt
/var/x/file1.txt
/var/y/file2.txt
<etc>

如何按某些条件对此文件列表进行排序 - 例如上次访问时间或上次更改时间?

提前致谢。

3 个答案:

答案 0 :(得分:3)

您可以stat使用sort命令,如下所示:

while read -r line; do
   stat -c '%Y %n' "$line"
done < file_list.txt | sort -n | cut -d ' ' -f2
  • stat -c '%Y %n'列出上次修改的时间,自Epoch后的秒数,后跟空格和文件名
  • sort -n以数字方式对时间戳及其文件名进行排序
  • cut -d ' ' -f2仅打印sort的输出中的文件名

答案 1 :(得分:1)

尝试一个衬垫(修改时间):

ls -t $(cat file_list.txt)

OR

ls -t `cat file_list.txt`

答案 2 :(得分:0)

您可以使用

获取最近更改的文件
cat file_list.txt | xargs stat -c '%Y %n' | sort | tail -1 | cut -c 12-

您可以获得最新的时间戳

cat file_list.txt | xargs stat -c '%Y %n' | sort | tail -1 | cut -c -10