2012-08-08 77 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