Linux下二進位制檔案的分割與合併
dd的作用是轉換和拷貝檔案,我們可以利用它來分割檔案,相關的選項如下:
if=filename:輸入的檔名
of=finename:輸出的檔名
bs=bytes:一次讀寫的位元組數,預設是512bytes
skip=blocks:拷貝前,跳過的輸入檔案的前blocks塊,塊的大小有bs決定
count=blocks:只拷貝輸入檔案的前blocks塊
例如,現在有一個檔案
[root]# du -b file
116616 file
將其分割為兩檔案file1和file2,那我們就設定每塊為1024位元組,將file的前60塊放入file1,餘下的放入file2:
[root]# dd if=file bs=1024 count=60 skip=0 of=file1
[root]# dd if=file bs=1024 count=60 skip=60 of=file2
然後用cat將兩個檔案合併為file.bak,要注意檔案的順序:
[root]# cat file1 file2 > file.bak
可以用md5sum驗證一下file和file.bak:
[root]# md5sum file
3ff53f7c30421ace632eefff36148a70 file
[root]# md5sum file.bak
3ff53f7c30421ace632eefff36148a70 file.bak
可以證明兩個檔案時完全相同的。
為了方便分割、合併檔案,我寫了兩個指令碼:
ddf.sh
#ddf.sh:分割檔案,分割後的檔案以數字結尾,例如file分割為兩個檔案:file1和file2
#!/bin/sh
#使用指令碼是第一引數是要分割的檔名
Filename=$1
Path=`pwd`
#驗證檔名是否正確,然後計算檔案的大小
if [ -z $Filename ];then
echo "Error:The file name can not be empty"
exit
fi
if [ -e $Filename ];then
Filesize=`du -b $Filename | awk '{print $1}'`
if [ $Filesize == 0 ];then
echo "Error:The File size is zero!"
exit
fi
echo "The file size is $Filesize Byte"
echo "Plese enter the subfile size(KB):"
else
echo "Error:$Filename does not
exit
fi
#輸入分割後每個檔案的大小,單位是KB
read Subfilesize
if [ -z $Subfilesize ];then
echo "Error:Input can not be empty"
exit
fi
echo $Subfilesize | grep '^[0-9]\+$' >> /dev/null
if [ $? -ne 0 ];then
echo "Error:The Input is not a number!"
exit
elif [ $Subfilesize -eq 0 ];then
echo "Error:The Subfile size is zero!"
exit
fi
#計算需要分割為幾個檔案
SubfileByte=`expr $Subfilesize \* 1024`
Subfilenum=`expr $Filesize / $SubfileByte`
if [ `expr $Filesize % $Subfilesize` -ne 0 ];then
Subfilenum=`expr $Subfilenum + 1`
fi
#將檔案分割
echo "$Filename will be divided into $Subfilenum"
i=1
skipnum=0
while [ $i -le $Subfilenum ]
do
echo "$Filename$i"
dd if=$Filename of="$Path/$Filename$i" bs=1024 count=$Subfilesize skip=$skipnum
i=`expr $i + 1`
skipnum=`expr $skipnum + $Subfilesize`
done
echo "$Filename has been divided into $Subfilenum"
echo "Done !"
caf.sh
#caf.sh:合併檔案,需要合併的檔案要放在一個資料夾裡
# 檔名分為兩個部分,第一部分都相同,第二部分必須是從1開始的連續數字,例如file1,file2,file3
# 合併後的檔名為file.bak
#!/bin/sh
#輸入檔名的第一部分
echo "Please enter file name:"
read Filename
if [ -z $Filename ];then
echo "Error:The file name can not be empty"
exit
fi
#輸入待合併檔案的個數
echo "Please enter the number of subfiles:"
read Subfilenum
if [ -z $Subfilenum ];then
echo "Error:The number of subfiles can not be empty"
exit
fi
echo $Subfilenum | grep '^[0-9]\+$' > /dev/null
if [ $? -ne 0 ];then
echo "Error:Input must be a number"
exit
fi
if [ $Subfilenum -eq 0 ];then
echo "Error:The number of subfiles can not be zero"
exit
fi
#合併檔案
i=1
Newfile=$Filename\.bak
while [ $i -le $Subfilenum ]
do
Subfilename=$Filename$i
if [ -e $Subfilename ];then
echo "$Subfilename done!"
cat $Subfilename >> $Newfile
i=`expr $i + 1`
else
echo "Error:$Subfilename does not exist"
rm -rf $Newfile
exit
fi
done
echo "Subfiles be merged into $Newfile"
echo "Success!"
用這兩個指令碼完成對file的分割、合併:
[root]# ./ddf.sh file
The file size is 116616 Byte
Plese enter the subfile size(KB):
60
file will be divided into 2
file1
記錄了60+0 的讀入
記錄了60+0 的寫出
61440位元組(61 kB)已複製,0.0352612 秒,1.7 MB/秒
file2
記錄了53+1 的讀入
記錄了53+1 的寫出
55176位元組(55 kB)已複製,0.0316272 秒,1.7 MB/秒
file has been divided into 2
Done !
[root]# ls
caf.sh ddf.sh file file1 file2
[root]# ./caf.sh
Please enter file name:
file
Please enter the number of subfiles:
file1 done!
file2 done!
Subfiles be merged into file.bak
Success!
[root]# ls
caf.sh ddf.sh file file1 file2 file.bak
相關推薦
Linux下二進位制檔案的分割與合併
浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>
【Linux相關】linux大檔案分割與合併
前言 近日由於網上下載了很多圖片,然後花了很長一段時間進行壓縮,壓縮完成後一看,128G多,由於機器在遠端,本來想通過百度網盤進行備份,後來提示最大單個檔案只能4G大小,無奈只能手動切割大檔案。 查了相關命令,發現可以通過組合split命令和cat命令來實現
Linux下大檔案分割和小檔案合併
就像Android中除錯問題,有的時候Log連續儲存會很大,這個時候進行分割就很好地處理檔案了。 在Linux下分割檔案通過split工具進行,合併檔案可以通過cat進行。 1. split a. 可以按行數進行分割 split -l 500 big
MySQL Linux下二進位制檔案包安裝mysql
Linux下二進位制檔案包安裝mysql 解壓縮mysql二進位制原始碼包到制定指定目錄,可自定義目錄 tar zxvf /opt/mysql-5.6.10-linux-glibc2.5-x86_64.tar.gz -C /opt 建立自定義mysql存放目錄 m
linux下core檔案設定與檢視
程式異常退出時,核心會生成一個core檔案(是記憶體映像以及除錯資訊)。可以通過使用gdb來檢視core檔案,指示出導致程式出錯的程式碼所在的檔案和行數。 1、檢視系統中core檔案生成的開關是否開啟 1)使用ulimit -c命令可檢視core檔案的生成開
PDF檔案如何分割與合併
在日常工作中,我們越來越多地接觸到PDF檔案。有時候我們會有將一個PDF檔案拆分成多個檔案或將多個PDF檔案合併成一個檔案的需求。對於一些經驗豐富的職場老手來說,解決這個問題輕而易舉,而對於一些職場新人來說卻是一個難題。今天,小編就給大家詳細講解PDF檔案如何拆分與合併。 1、因為PD
每天一點linux命令:分割與合併文字
在linux的實際應用中,我們有時候需要對檔案進行分割與合併處理,我們可以使用split和paste命令進行此類操作。 split命令 split 是以一個很好的分割工具,它可以將一個檔案按行分割出來。(split只能按行分割,如果按列,可以用cut,當然更強大的還是用gawk)。 sp
Linux下將檔案打包、壓縮並分割成指定大小
轉自https://blog.csdn.net/loongembedded/article/details/54233175 Linux解壓檔案時遇到的問題,不知道總的資料是分了好多份,需要輸入命令統一解壓 1、普通tar壓縮命令 tar -zcvf
linux下的檔案的歸檔與壓縮
檔案的歸檔 tar命令(下列中包含執行結果) # tar cf dir.tar /root/Desktop tar: Removing leading'/' f rom member names tar: / root /Desktop/dir.
檔案的分割與合併
import java.io.*; import java.util.*; public class MySplitFile { private String srcPath;//被分割的檔案目錄 private String destPath;//分割的目的
linux下libevent安裝配置與簡介 以及 linux庫檔案搜尋路徑的配置
libevent簡介 libevent是基於Reactor模式的I/O框架庫,它具有良好的跨平臺性和執行緒安全,它實現了統一事件源(即對I/O事件、訊號和定時事件提供統一的處理)。高效能分散式記憶體物件快取軟體memcached是使用libevent的著名案例。 libev
Linux下使用gzip壓縮與解壓檔案
Linux下gzip命令是用來壓縮檔案的。gzip不僅可以用來壓縮大的、較少使用的檔案以節省磁碟空間,還可以和tar命令一起構成Linux作業系統中比較流行的壓縮檔案格式。據統計,gzip命令對文字檔案有60%~70%的壓縮率。 gzip命令的格式是: gzip [option] [file] gz
Linux下檢視檔案和資料夾大小的df和du命令聯絡與區別
前面經常需要對Host裡的多個VM進行一些操作如take snapshot等,需要檢視容量時經常用到df -h,但是用到du 的比較少,當需要檢視具體的某個資料夾下的各個檔案 的大小時就需要用到du , 看了下面的介紹當使用 du -h --max-depth=1 wor
Linux下程式設計------檔案與IO(三) 檔案共享和fcntl函式
檔案共享 一個程序打開了兩個檔案 檔案表條目(file-table-entry): 1.檔案狀態標誌(file-status-flags): 讀/寫/追加/同步/
linux下目錄許可權檢視與修改以及檔案和目錄訪問許可權設定
檢視檔案許可權的語句: 在終端輸入: ls -l xxx.xxx (xxx.xxx是檔名) 那麼就會出現相類似的資訊,主要都是這些: -rw-rw-r-- 一共有10位數 其中: 最前面那個 - 代表的是型別 中間那三個 rw- 代表的是所有者(user
Linux下proc檔案系統介紹與應用
proc檔案系統的作用 (1) 核心專案太龐大,除錯困難,引入新的除錯方法。 (2) proc檔案系統的思路是:在核心中構建一個虛擬檔案系統/proc,核心執行時將核心中一些關鍵的資料結構以檔案的方式呈現在/proc目錄下的一些特定檔案中, 這樣相當於將不可見的核心中的資料結構以
使用Python進行檔案的分割與合併
使用Python來進行檔案的分割與合併是非常簡單的。 python程式碼如下: splitFile--將檔案分割成大小為chunksize的塊; mergeFile--將眾多檔案塊合併成原來的檔案; # coding=utf-8 import os,sys reload(
Linux tar命令總結:Linux下對檔案進行打包、壓縮並分割成指定大小
1、普通tar壓縮命令tar -zcvf andywang.tar.gz andywang//將andywang資料夾壓縮成andywang.tar.gz2、壓縮後的檔案太大,需要將andywang.tar.gz分割成N個指定大小的檔案split -b 4000M -d -a
tftpd32伺服器軟體在Windows與linux 下的檔案傳輸
tftpd32是一個很方便的傳輸檔案的伺服器端軟體,下面介紹這款軟體的使用: 以上是我的tftpd32中文版軟體介面;設定到伺服器介面; 使用一:可以通過tftpd32,進行Windows與虛擬機器中的Linux進行檔案傳輸: 1.開啟windows7(作者用的win7
Linux下的檔案描述符與檔案指標及其區別
檔案描述符 在Linux系統中一切皆檔案。如果要對某個裝置進行操作,就不得不開啟此裝置檔案,只要你開啟檔案就會獲得該檔案的檔案描述符fd(file discriptor),這個檔案描述符就是一個整數。每個程序在PCB(Process Control Block