给定一个包含一些文件列表的文本文件,例如,在bash中按日期排序的文件列表
$ cat file_list.txt
/var/x/file1.txt
/var/y/file2.txt
<etc>
如何根据某些条件对文件列表进行排序 - 如上次访问时间或上次更改时间?
在此先感谢。
给定一个包含一些文件列表的文本文件,例如,在bash中按日期排序的文件列表
$ cat file_list.txt
/var/x/file1.txt
/var/y/file2.txt
<etc>
如何根据某些条件对文件列表进行排序 - 如上次访问时间或上次更改时间?
在此先感谢。
可以使用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'
名单去年修改的,因为时代秒后面加一个空格和文件名sort -n
各种时间戳和其文件名数字cut -d ' ' -f2
仅打印排序输出中的文件名尝试一个衬里(通过修改时间):
ls -t $(cat file_list.txt)
OR
ls -t `cat file_list.txt`
如果任何文件包含空格,这将失败。此外,这受到路径名称扩展的影响。为了“安全”:'(set -f; IFS = $'\ n'; ls -t $(cat file_list.txt))'。 – 2014-10-26 17:24:25
@gniourf_gniourf谢谢,我同意。 – SMA 2014-10-26 17:25:36
在OSX(BSD)等效stat命令是'STAT -f '%M%N'“ $行“'。 – 2017-10-16 19:37:57