首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bash中按数字文件名排序的erge文本文件

Bash中按数字文件名排序的erge文本文件
EN

Stack Overflow用户
提问于 2016-02-01 09:17:30
回答 3查看 963关注 0票数 3

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

我试过了,但出于某种原因,前三行不太合适。

代码语言:javascript
运行
复制
sort -n *txt > all.txt
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-01 10:17:53

添加这个答案,只是因为目前接受的答复建议使用糟糕的做法。&将来,Hellmar可能会遇到同样的问题-- 我曾经面对过一次。无法删除已接受的答案。

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

代码语言:javascript
运行
复制
printf "%s\0" *txt | sort -zn | xargs -0 cat > all.txt

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

另外,如果所有文件名都具有相同的结构(例如file0001.txt、file0002.txt等),那么这段代码应该也能正常工作:

代码语言:javascript
运行
复制
cat file[0-9][0-9][0-9][0-9].txt > all.txt
票数 3
EN

Stack Overflow用户

发布于 2016-02-01 09:28:26

代码语言:javascript
运行
复制
ls *txt | sort -n | xargs cat > all.txt

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

票数 1
EN

Stack Overflow用户

发布于 2016-08-31 09:43:42

更新安尼什森的答案。

代码语言:javascript
运行
复制
printf "%s\0" *txt | sort -k1.thecharlocation -zn | xargs -0 cat > all.txt

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

在这个问题中,还可以看到Nate的另一个类似的答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35126745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档