1

如果在一个目录中,假设有 100 个文件,名称分别为 file.pcap1、file.pcap2、file.pcap3、.....、file.pcap100。在 shell 脚本中,为了逐个读取这些文件,我写了如下一行:

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

读取文件的顺序是什么?它们是否按文件名末尾的数字的递增顺序读取?所有类型的 linux 机器都是一样的情况吗?

4

2 回答 2

2

它按文件名排序。就像默认值一样ls(没有标志)。

此外,您需要$在 foreach 中删除:

for file in /root/*pcap*
于 2012-08-08T19:01:12.997 回答
1

POSIX shell 返回使用当前语言环境排序的路径

如果模式匹配任何现有文件名或路径名,则模式应替换为这些文件名和路径名,根据当前语言环境中有效的整理顺序进行排序

这意味着 pcap10 在 pcap2 之前。您可能需要自然排序顺序,例如natsort 函数的 Python 模拟(使用“自然顺序”算法对列表进行排序)

于 2012-08-08T19:18:37.377 回答