![我如何按顺序列出文件](https://linux22.com/image/874972/%E6%88%91%E5%A6%82%E4%BD%95%E6%8C%89%E9%A1%BA%E5%BA%8F%E5%88%97%E5%87%BA%E6%96%87%E4%BB%B6.png)
我有一个 18GB 的文件需要下载,但网络连接不太好。无法使用 Torrenting。因此,我将文件分成 100 个部分,最后,全部下载完毕。现在,我需要使用类似 cat 的程序将文件重新组合在一起。
因此我需要按计数顺序列出文件,然后将它们连接起来。文件名类似于 SomeFile1.dcd、SomeFile2.dcd、SomeFile3.dcd、SomeFile10.dcd、...SomeFile100.dcd
为了使连接正常工作,我需要按正常的数字顺序列出文件,否则框架将会变得混乱。
我怎样才能按正常数字 1,2,3,4.... 类型顺序列出文件?
答案1
使用bash
括号扩展:
cat SomeFile{1..100}.dcd >final_file
您可以首先检查一下它被扩展为哪些文件:
echo SomeFile{1..100}.dcd
这里{1..100}
将扩充为1,2,3....100
。
例子 :
$ echo SomeFile{1..5}.dcd
SomeFile1.dcd SomeFile2.dcd SomeFile3.dcd SomeFile4.dcd SomeFile5.dcd
答案2
perl
也可以在循环中使用扩展语法:
perl -e 'print "SomeFile$_.dcd " for 1..100' > foo.txt
答案3
使用find
和sort
find . -maxdepth 1 -type f -name "*.dcd" | sort -V
答案4
通配符模式将扩展到有序与通配符模式匹配的文件(和目录)列表;
如果您当前工作目录中只有这些文件,则只需:
cat * > out
或者如果没有其他以“SomeFile”开头的文件/目录:
cat SomeFile* > out
或者如果没有其他以“.dcd”结尾的文件/目录:
cat *.dcd > out
此外,在中zsh
,您可能只使用*(.)
通配符模式包含常规文件:
cat *(.) > out
cat SomeFile*(.) > out
cat *(.).dcd > out