Linux下合併檔案

大雄45發表於2023-04-06

我們在先前的文章中介紹過 cat 命令的使用,瞭解到該命令用於獲取檔案內容並將其輸出到螢幕或其他裝置中。事實上,cat 命令的最初目的是連線檔案,所以我們可以用它來合併檔案。

使用 cat 命令合併檔案的方法很簡單,在命令後面跟上要合併的檔名稱(包括路徑)即可,如下所示:

cat   ...

我們舉個例子,假如我們有兩個檔案分別為 file1.txt 和 file2.txt,我們首先使用 cat 命令檢視其中的內容,然後再將這兩個檔案合併,如下圖所示:

Linux下合併檔案Linux下合併檔案

但是上面的例子,只是將兩個檔案的內容合併輸出到了終端中,並沒有將合併後的內容儲存到什麼地方,且對於 file1.txt 和 file2.txt 這兩個檔案也並沒有做什麼改動。如果我們想要將合併後的內容儲存到某個地方,需要將其重定向到另外一個檔案中,如下所示:

cat file1.txt file2.txt > file3.txt

Linux下合併檔案Linux下合併檔案

上述命令中的 file3.txt 可以是一個現有的檔案,也可以是一個不存在的檔案,如果不存在,將會建立。另外一個,上面命令中的重定向符號 > 會覆蓋檔案的內容,所以我們建議不要使用現有檔案,以免被覆蓋。

使用 cat 命令將合併後的內容追加到現有檔案中

每次合併都要重新建立一個檔案,對於某些需求來說,也不太方便。那麼,有沒有方法將合併後的內容追加到某個現有檔案中呢?答案是肯定的。方法就是將重定向符號 > 改為 >>,如下所示:

cat file1.txt file2.txt >> file3.txt

上面的 file1.txt,file2.txt 和 file3.txt 是前一個例子中用到的檔案,為了區分,我們在 file1.txt 和 file2.txt 中中新增一些字元,然後執行上面命令之,我們再看一下 file3.txt,如下圖所示:

Linux下合併檔案Linux下合併檔案

可以看到,file3.txt 中的內容是在先前的基礎上追加了部分內容。

使用迴圈合併多個檔案

如果要合併的檔案數量過多,比如100個,那需要在 cat 命令後新增 100 個檔名稱嗎?這樣肯定是不現實的。我們有一個現成的方法,那就是使用 for 迴圈來合併檔案。

比如,我們要有file1.txt,file2.txt 。。。file5.txt 5個檔案需要合併,可使用如下命令:

for i in {1..5}; do cat "file$i.txt" >> newfile.txt; done

Linux下合併檔案Linux下合併檔案

上述命令我們將 5 個檔案的內容合併到了新檔案 newfile.txt 中。

合併檔案的其他方法

除了使用 cat 以外,還可以使用 sed 命令來合併檔案。sed 是一種非互動式的檔案編輯方式,它可以在某個特定時間內儲存檔案的更改,使用 h 選項,可以將更改暫時放在緩衝區。看下面的例子:

sed h file1.txt file2.txt > file3.txt

Linux下合併檔案Linux下合併檔案


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2939221/,如需轉載,請註明出處,否則將追究法律責任。

相關文章