根据文件名中的数字按特定顺序排列 cat 文件

sod*_*ate 15 files cat text-formatting

我有名为file.88_0.pdb, file.88_1.pdb, ..., 的文件file.88_100.pdb。我想要cat它们,以便file.88_1.pdbfile.88_0.pdbfile.88_2.pdb之后 等之后粘贴file.88_1.pdb。如果我这样做cat file.88_*.pdb > all.pdb,文件将按以下顺序放在一起:0 1 10 11 12 13 14 15 16 17 18 19 2 20...等。如何将它们放在一起以便顺序是0 1 2 3 4 5 6...

αғs*_*нιη 28

brace expansion

cat file.88_{0..100}.pdb >>bigfile.pdb
Run Code Online (Sandbox Code Playgroud)

要忽略打印不存在文件的错误消息,请使用:

cat file.88_{0..100}.pdb >>bigfile.pdb 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

zshshell 中,您还可以使用(n)globbing 限定符来请求对glob 进行数字排序(与默认的字母顺序相反):

cat file.88_*.pdb(n) >>bigfile.pdb 2>/dev/null
Run Code Online (Sandbox Code Playgroud)


小智 6

在没有大括号扩展的 shell 中,您可以使用ls+ xargs

ls -v file.88_*.pdb | xargs cat > all.pdb
Run Code Online (Sandbox Code Playgroud)

ls 将按数字顺序对文件进行排序:

-v 文本中的自然排序(版本)编号。