2012-08-08 153 views
1

如果在目錄中,假設有100個文件,名稱分別爲file.pcap1,file.pcap2,file.pcap3,.....,file.pcap100。在一個shell腳本中,爲了逐一讀取這些文件,我寫了如下一行:從linux中的目錄中讀取文件的順序

for $file in /root/*pcap* 
do 
    Something 
done 

什麼是讀取文件的順序?他們是按照文件名末尾數字的增加順序讀取的嗎?這對所有類型的Linux機器都是一樣的嗎?

+3

請參閱http://superuser.com/questions/192280/does-bashs-match-files-in-alphanumeric-order – Mat 2012-08-08 19:01:02

回答

2

它按文件名排序。就像默認的ls(沒有標誌)。

此外,你需要刪除$在你的foreach:

for file in /root/*pcap* 
+0

我有890 t0 1200的文件。如果我做ls,1000到1200的文件已經出現首先,然後出現從890到999的文件。所以,我想我需要重命名890到0890,等等..直到999. – 2012-08-08 19:24:41

+0

如果我在別名ls = ls -lrth的bashrc文件中輸入別名,然後運行該bashrc腳本,該怎麼辦?這些文件是否按正確的順序閱讀,然後我沒有明確地重命名它們? – 2012-08-08 19:38:13

+1

@JustinCarrey我不是這方面的專家,但你可以嘗試這樣的事情:在'ls | sed -e's/\。pcap/.pcap/g'| sort -n -k2 | sed -e's/\。pcap/.pcap/g'' – 2012-08-08 19:50:49