如何在 Linux 中分割和重組檔案!
我們將學習如何使用 csplit,split 和 cat 來重新整理檔案,然後再將檔案合併在一起。這些操作在任何檔案型別下都有用:文字、圖片、音訊檔案、ISO 映象檔案等。
csplit 是這些有趣的小 中的一個,它永遠伴你左右,一旦開始用它就離不開了。csplit 將單個檔案分割成多個檔案。這個示例演示了最簡單的使用方法,它將檔案 foo.txt 分為三個檔案,以行號 17 和 33 作為分割點:
$ csplit foo.txt 17 33 2591 3889 2359
csplit 在當前目錄下建立了三個新檔案,並以位元組為單位列印出新檔案的大小。預設情況下,每個新檔名為 xx_nn:
$ ls xx00 xx01 xx02
您可以使用 head 檢視每個新檔案的前十行:
$ head xx* ==> xx00 <== Foo File by Carla Schroder Foo text Foo subheading More foo text ==> xx01 <== Foo text Foo subheading More foo text ==> xx02 <== Foo text Foo subheading More foo text
如果要將檔案分割成包含相同行數的多個檔案怎麼辦?可以指定行數,然後將重複次數放在在花括號中。此示例重複分割 4 次,並將剩下的轉儲到最後一個檔案中:
$ csplit foo.txt 5 {4} 57 1488 249 1866 3798
您可以使用星號萬用字元來告訴 csplit 儘可能多地重複分割。這聽起來很酷,但是如果檔案不能等分,則可能會失敗(LCTT 譯註:低版本的 csplit 不支援此引數):
$ csplit foo.txt 10 {*} 1545 2115 1848 1901 csplit: '10': line number out of range on repetition 4 1430
預設的行為是刪除發生錯誤時的輸出檔案。你可以用 -k 選項來解決這個問題,當有錯誤時,它就不會刪除輸出檔案。另一個行為是每次執行 csplit 時,它將覆蓋之前建立的檔案,所以你需要使用新的檔名來分別儲存它們。使用 --prefix= _prefix_ 來設定一個不同的檔案字首:
$ csplit -k --prefix=mine foo.txt 5 {*} 57 1488 249 1866 993 csplit: '5': line number out of range on repetition 9 437 $ ls mine00 mine01 mine02 mine03 mine04 mine05
選項 -n 可用於改變對檔案進行編號的數字位數(預設是 2 位):
$ csplit -n 3 --prefix=mine foo.txt 5 {4} 57 1488 249 1866 1381 3798 $ ls mine000 mine001 mine002 mine003 mine004 mine005
csplit 中的 “c” 是上下文(context)的意思。這意味著你可以根據任意匹配的方式或者巧妙的正規表示式來分割檔案。下面的例子將檔案分為兩部分。第一個檔案在包含第一次出現 “fie” 的前一行處結束,第二個檔案則以包含 “fie” 的行開頭。
$ csplit foo.txt /fie/
在每次出現 “fie” 時分割檔案:
$ csplit foo.txt /fie/ {*}
在 “fie” 前五次出現的地方分割檔案:
$ csplit foo.txt /fie/ {5}
僅當內容以包含 “fie” 的行開始時才複製,並且省略前面的所有內容:
$ csplit myfile %fie%
split 與 csplit 類似。它將檔案分割成特定的大小,當您將大檔案分割成小的多媒體檔案或者使用網路傳送時,這就非常棒了。預設的大小為 1000 行:
$ split foo.mv $ ls -hl 266K Aug 21 16:58 xaa 267K Aug 21 16:58 xab 315K Aug 21 16:58 xac [...]
它們分割出來的大小相似,但你可以指定任何你想要的大小。這個例子中是 20M 位元組:
$ split -b 20M foo.mv
尺寸單位縮寫為 K,M,G,T,P,E,Z,Y(1024 的冪)或者 KB,MB,GB 等等(1000 的冪)。
為檔名選擇你自己的字首和字尾:
$ split -a 3 --numeric-suffixes=9 --additional-suffix=mine foo.mv SB 240K Aug 21 17:44 SB009mine 214K Aug 21 17:44 SB010mine 220K Aug 21 17:44 SB011mine
-a 選項控制編號的數字位置。--numeric-suffixes 設定編號的開始值。預設字首為 x,你也可以透過在檔名後輸入它來設定一個不同的字首。
你可能想在某個時候重組你的檔案。常用的 cat 命令就用在這裡:
$ cat SB0* > foo2.txt
示例中的星號萬用字元將匹配到所有以 SB0 開頭的檔案,這可能不會得到您想要的結果。您可以使用問號萬用字元進行更精確的匹配,每個字元使用一個問號:
$ cat SB0?????? > foo2.txt
和往常一樣,請查閱相關的手冊和資訊頁面以獲取完整的命令選項。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2994849/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何在 Linux 分割槽或邏輯卷中建立檔案系統Linux
- 如何在Linux 中獲取硬碟分割槽或檔案系統的UUID?Linux硬碟UI
- 如何在 Linux 上重新命名一組檔案Linux
- 如何在 Linux 中找到並刪除重複檔案Linux
- shell 檔案合併 去重 分割
- 在linux系統中對檔案進行分割Linux
- 如何在Linux中查詢一個檔案Linux
- 如何在Linux中進行檔案切割操作?Linux
- 使用 split 命令分割 Linux 檔案Linux
- 初級:如何在 Linux 中 zip 壓縮檔案和資料夾Linux
- 如何在 Linux 上建立和使用交換檔案Linux
- 如何在 Linux 中查詢最大的 10 個檔案Linux
- linux組資訊檔案Linux
- 如何在 Linux 中擴充套件 XFS 根分割槽Linux套件
- 如何在 Linux shell 中找出所有包含指定文字的檔案Linux
- 在 Linux 中如何歸檔檔案和目錄Linux
- Linux 磁碟分割槽及檔案系統管理Linux
- Linux 中複製和移動檔案Linux
- 如何在 Linux 上一次性批量重新命名一組檔案?Linux
- linux檔案合併、去重、拆分Linux
- Linux Centos系統 磁碟分割槽和檔案系統管理 (深入理解)LinuxCentOS
- Linux磁碟分割槽、掛載、檢視檔案大小Linux
- 如何在 Linux下進行檔案切割操作?Linux
- 如何在Windows 11系統中將任意檔案(如bat/log等)固定在開始選單?WindowsBAT
- Linux-檔案寫入和檔案同步Linux
- 在Linux中,如何在Linux中安裝和配置KVM?Linux
- 在Linux中,如何理解加密工具?如GnuPG和OpenSSL。Linux加密
- 新手教程:如何在 Linux 下解壓 Zip 檔案Linux
- 如何在 Acrobat Pro DC 中編輯和註釋 PDF 檔案?BAT
- 在Linux中,如何建立、刪除和修改檔案?Linux
- 如何在 Linux 中檢視已掛載的檔案系統型別Linux型別
- 如何在macOS中管理檔案關聯?Mac
- 如何在macOS中管理檔案關聯Mac
- 如何在python中讀取配置檔案Python
- Rust 模組和檔案 - [譯]Rust
- Linux 初學者:如何在 Ubuntu 中重啟網路LinuxUbuntu
- Linux 中獲取硬碟分割槽或檔案系統的 UUID 的七種方法Linux硬碟UI
- Linux: 如何分割檔案,不再被 4G 大小限制了Linux