繁体   English   中英

在Bash中提供由数字文件名排序的文本文件

[英]erge text files ordered by numerical filenames in Bash

有没有办法用一个bash命令以文件名的数字顺序连接多个文本文件?

我尝试了这个,但由于某种原因,前三行不按顺序排列

sort -n *txt > all.txt

添加这个答案,只是因为当前接受的答案表明一个不好的做法 &将来,Hellmar可能会遇到我遇到的完全相同的问题 无法删除已接受的答案。

无论如何,这应该是安全的答案:

printf "%s\0" *txt | sort -zn | xargs -0 cat > all.txt

这里,整个管道具有由NULL字符分隔的文件名。 NULL字符只是不能成为文件名一部分的字符。

此外,如果所有文件名具有相同的结构(例如file0001.txt,file0002.txt等),那么这段代码应该同样好用:

cat file[0-9][0-9][0-9][0-9].txt > all.txt
ls *txt | sort -n | xargs cat > all.txt

这将获取所有文件名的列表并对其进行排序,然后使用xargs从cat和排序列表构造命令行。

更新anishsane的答案。

printf "%s\0" *txt | sort -k1.thecharlocation -zn | xargs -0 cat > all.txt

thecharlocation是您要排序的第一个键。 如果您的文件名是file01.txt ,则thecharlocation5

另请参阅Nate在此问题中的另一个类似答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM