Bash

cat ~/foo* > ~/results/output.txt 會保留 ~/foo* 的順序嗎?

  • October 9, 2016

我有數百個表格文件~/foo.x.y。這些文件是

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

我想將所有這些文件組合成一個~/results/output.txt保留順序的大文件。我相當肯定

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

完成了這個,但我不確定這個命令是否會尊重我的foo文件的順序。這個命令有用嗎?如果沒有,我該如何完成我的任務?

cat將遵循參數的順序,如果您展開~/foo*(在某些 shell 中使用雙製表符或echo ~/foo*),您將看到該順序。

*萬用字元的順序是字母順序。

SO globbing 問題: https ://superuser.com/questions/192280/does-bashs-match-files-in-alphanumeric-order

來自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

您可以在鍵入後和按之前*使用C-展開。x *``*``Enter

引用自:https://unix.stackexchange.com/questions/315286