搜尋
首頁系統教程LinuxLinux 檔案操作指南:分割與重組檔案的技巧

Linux 檔案操作指南:分割與重組檔案的技巧

Jan 06, 2024 pm 04:09 PM
linuxlinux教程紅帽linux系統linux指令linux認證紅帽linuxlinux視頻

導讀 Linux 有幾個用於分割檔案的工具程式。那你為什麼要分割文件呢?一個用例是將大檔案分割成更小的尺寸,以便它適用於比較小的儲存介質,例如 USB 隨身碟。當您遇到 FAT32(最大檔案大小為 4GB),且您的檔案大於此時,透過 USB 傳輸檔案也是一個很好的技巧。另一個用例是加速網路檔案傳輸,因為小檔案的並行傳輸通常更快。

我們將學習如何使用 csplit,split 和 cat 來重新整理文件,然後再將文件合併在一起。這些操作在任何文件類型下都有用:文字、圖片、音訊檔案、ISO 鏡像檔案等。

使用 csplit 分割檔案

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  xx01  xx02 
<p>如果要將檔案分割成包含相同行數的多個檔案怎麼辦?可以指定行數,然後將重複次數放在在花括號中。此範例重複分割 4 次,並將剩餘的轉儲到最後一個檔案:</p>
<pre class="brush:php;toolbar:false">$ 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

和往常一樣,請查閱相關的手冊和資訊頁面以取得完整的命令選項。

以上是Linux 檔案操作指南:分割與重組檔案的技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:Linux就该这么学。如有侵權,請聯絡admin@php.cn刪除
Linux軟件的未來:Flatpak和Snap會替換本機桌面應用程序嗎?Linux軟件的未來:Flatpak和Snap會替換本機桌面應用程序嗎?Apr 25, 2025 am 09:10 AM

多年來,Linux軟件分佈依賴於DEB和RPM等本地格式,並深深地根深蒂固。 但是,Flatpak和Snap已經出現,有望成為應用程序包裝的通用方法。 本文考試

Linux和Windows處理設備驅動程序的區別有什麼區別?Linux和Windows處理設備驅動程序的區別有什麼區別?Apr 25, 2025 am 12:13 AM

Linux和Windows在處理設備驅動程序上的差異主要體現在驅動管理的靈活性和開發環境上。 1.Linux採用模塊化設計,驅動可以動態加載和卸載,開發者需深入理解內核機制。 2.Windows依賴微軟生態,驅動需通過WDK開發並簽名認證,開發相對複雜但保證了系統的穩定性和安全性。

比較和對比Linux和Windows的安全模型。比較和對比Linux和Windows的安全模型。Apr 24, 2025 am 12:03 AM

Linux和Windows的安全模型各有優勢。 Linux提供靈活性和可定制性,通過用戶權限、文件系統權限和SELinux/AppArmor實現安全。 Windows則注重用戶友好性,依賴WindowsDefender、UAC、防火牆和BitLocker保障安全。

Linux和Windows之間的硬件兼容性有何不同?Linux和Windows之間的硬件兼容性有何不同?Apr 23, 2025 am 12:15 AM

Linux和Windows在硬件兼容性上不同:Windows有廣泛的驅動程序支持,Linux依賴社區和廠商。解決Linux兼容性問題可通過手動編譯驅動,如克隆RTL8188EU驅動倉庫、編譯和安裝;Windows用戶需管理驅動程序以優化性能。

Linux和Windows之間虛擬化支持有哪些差異?Linux和Windows之間虛擬化支持有哪些差異?Apr 22, 2025 pm 06:09 PM

Linux和Windows在虛擬化支持上的主要區別在於:1)Linux提供KVM和Xen,性能和靈活性突出,適合高定制環境;2)Windows通過Hyper-V支持虛擬化,界面友好,與Microsoft生態系統緊密集成,適合依賴Microsoft軟件的企業。

Linux系統管理員的主要任務是什麼?Linux系統管理員的主要任務是什麼?Apr 19, 2025 am 12:23 AM

Linux系統管理員的主要任務包括系統監控與性能調優、用戶管理、軟件包管理、安全管理與備份、故障排查與解決、性能優化與最佳實踐。 1.使用top、htop等工具監控系統性能,並進行調優。 2.通過useradd等命令管理用戶賬戶和權限。 3.利用apt、yum管理軟件包,確保系統更新和安全。 4.配置防火牆、監控日誌、進行數據備份以確保系統安全。 5.通過日誌分析和工具使用進行故障排查和解決。 6.優化內核參數和應用配置,遵循最佳實踐提升系統性能和穩定性。

很難學習Linux嗎?很難學習Linux嗎?Apr 18, 2025 am 12:23 AM

學習Linux並不難。 1.Linux是一個開源操作系統,基於Unix,廣泛應用於服務器、嵌入式系統和個人電腦。 2.理解文件系統和權限管理是關鍵,文件系統是層次化的,權限包括讀、寫和執行。 3.包管理系統如apt和dnf使得軟件管理方便。 4.進程管理通過ps和top命令實現。 5.從基本命令如mkdir、cd、touch和nano開始學習,再嘗試高級用法如shell腳本和文本處理。 6.常見錯誤如權限問題可以通過sudo和chmod解決。 7.性能優化建議包括使用htop監控資源、清理不必要文件和使用sy

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器