[英]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
,則thecharlocation
為5
。
另請參閱Nate在此問題中的另一個類似答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.