Will 'cat ~ / foo * ~ / results / output.txt' preserva a ordenação de '~ / foo *'?

3

Eu tenho centenas de arquivos no formato ~/foo.x.y . Os arquivos são

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

Eu quero combinar todos esses arquivos em um arquivo grande ~/results/output.txt onde o pedido é preservado. Estou bastante certo de que

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

realiza isso, mas não tenho certeza se esse comando respeitará a ordem dos meus arquivos foo . Este comando funciona? Se não, como posso realizar minha tarefa?

    
por Brian Fitzpatrick 09.10.2016 / 17:04

2 respostas

3

cat seguirá a ordem dos argumentos, se você expandir ~/foo* (em alguma guia dupla de shells, ou echo ~/foo* ) você verá o pedido.

A ordem do curinga * é alfabética.

Pergunta SO globbing: link

    
por 09.10.2016 / 17:05
1

De 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

Anote alphabetically . No seu caso, será:

$ cat foo.0001.0010 foo.0011.0020 foo.0021.0030

Você pode expandir * com C - x * depois de digitar * e antes de pressionar Enter .

    
por 09.10.2016 / 17:10