簡體   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