Dd使用
使用dd
剪切文件結束部分
可能有一個簡單的技巧可以做到這一點,但我無法從手冊頁中找到。
如何從大小未定的文件中剪切最後 1MB,例如,使用
dd
?
好吧,假設你有
stat
andbash
,你可以得到文件大小:stat -c %s your_file
如果您想使用 提取該
$amount
文件的最後一個字節dd
,您可以:dd if=your_file of=extracted_part \ bs=1 count=$amount \ skip=$(( $(stat -c %s your_file) - $amount ))
但更明智的方法是使用
tail
:tail -c $(( 1024*1024 )) your_file > target_file
dd --幫助 用法:dd [操作數]... 或:dd 選項 複製文件,根據操作數進行轉換和格式化。 bs=BYTES 一次讀取和寫入 BYTES 字節(另見 ibs=,obs=) cbs=BYTES 一次轉換 BYTES 字節 conv=CONVS 根據逗號分隔的符號列表轉換文件 count=BLOCKS 只複製 BLOCKS 輸入塊 ibs=BYTES 一次讀取 BYTES 個字節(預設值:512) if=FILE 從 FILE 而不是 stdin 讀取 iflag=FLAGS 按逗號分隔符號列表讀取 obs=BYTES 一次寫入 BYTES 字節(預設值:512) of=FILE 寫入 FILE 而不是標準輸出 oflag=FLAGS 按逗號分隔符號列表寫入 seek=BLOCKS 在輸出開始時跳過 BLOCKS obs 大小的塊 skip=BLOCKS 在輸入開始時跳過 BLOCKS ibs 大小的塊 status=noxfer 抑制傳輸統計 BLOCKS 和 BYTES 後面可以跟以下乘法後綴: c =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024, xM =M GB =1000*1000*1000,G =1024*1024*1024,以此類推 T、P、E、Z、Y。
如果文件大小正好是 10MB,則 1024*10 10240K 這將留下最後的 1024K。您應該使用 ibs 和 obs 選項指定您正在使用的塊大小。
1M = 1024K 1024*9 = 9216
dd if=/10/MB/file of=/9/MB/file count=9216K ibs=1K obs=1K dd if=/10/MB/file of=/9/MB/file count=9M ibs=1M obs=1M
您還可以跳過文件的前 1MB,使用跳過選項讀取文件的末尾,跳過前 1MB。
dd if=/10/MB/file of=/9/MB/file skip=1M ibs=1M obs=1M
使用 seek 選項,您可以將 a 寫入輸出文件中的特定位置。假設您想保留前 1MB 並覆蓋最後 8MB。
dd if=/10/MB/file of=/9/MB/file skip=1M seek=1M count=8M ibs=1M obs=1M
您可能需要獲取有關文件大小的一些詳細資訊,以確保輸入和輸出正確數量的數據。
ls -s --block-size 1K ./my/10MB/file
男人 --塊大小=大小 使用 SIZE 字節塊。請參閱下面的 SIZE 格式 -s,--尺寸 列印每個文件的分配大小,以塊為單位 SIZE 可以是(或可以是一個可選地後跟的整數)以下之一 降低:對於 G、T,KB 1000、K 1024、MB 1000*1000、M 1024*1024 等等, P、E、Z、Y。