我有数百个表单的文件~/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