`cat ~/foo* > ~/results/output.txt` 会保留 `~/foo*` 的顺序吗?

`cat ~/foo* > ~/results/output.txt` 会保留 `~/foo*` 的顺序吗?

我有数百个表单的文件~/foo.x.y。这些文件是

~/foo.0001.0010
~/foo.0011.0020
~/foo.0021.0030
...
~/foo.4371.4378

我想将所有这些文件组合成一个~/results/output.txt保留顺序的大文件。我相当确定

$ cat ~/foo* > ~/results/output.txt

完成了这个,但我不确定这个命令是否会尊重我的foo文件的顺序。这个命令有效吗?如果没有,我该如何完成我的任务?

答案1

cat将遵循参数的顺序,如果展开~/foo*(在某些 shell 中双选项卡或echo ~/foo*),您将看到顺序。

通配符的顺序*是按字母顺序排列的。

所以通配问题: https://superuser.com/questions/192280/does-bashs-match-files-in-alphanumeric-order

答案2

man bash

After word splitting, unless the -f option has been set, bash scans
each word for the characters *, ?, and [.  If one of these characters
appears, then the word is regarded as a pattern, and replaced with an
*alphabetically* sorted list of filenames matching the pattern

笔记alphabetically。在你的情况下它将是:

$ cat foo.0001.0010 foo.0011.0020 foo.0021.0030

您可以在键入后按 之前使用-*进行扩展。Cx **Enter

相关内容