2014-10-26 71 views
1

給定一個包含一些文件列表的文本文件,例如,在bash中按日期排序的文件列表

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

如何根據某些條件對文件列表進行排序 - 如上次訪問時間或上次更改時間?

在此先感謝。

回答

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'名單去年修改的,因爲時代秒後面加一個空格和文件名
  • sort -n各種時間戳和其文件名數字
  • cut -d ' ' -f2僅打印排序輸出中的文件名
+1

在OSX(BSD)等效stat命令是'STAT -f '%M%N'「 $行「'。 – 2017-10-16 19:37:57

1

嘗試一個襯裏(通過修改時間):

ls -t $(cat file_list.txt) 

OR

ls -t `cat file_list.txt` 
+2

如果任何文件包含空格,這將失敗。此外,這受到路徑名稱擴展的影響。爲了「安全」:'(set -f; IFS = $'\ n'; ls -t $(cat file_list.txt))'。 – 2014-10-26 17:24:25

+0

@gniourf_gniourf謝謝,我同意。 – SMA 2014-10-26 17:25:36