Gunzip 多個檔案並重新命名它們

Gunzip 多個檔案並重新命名它們

我想知道是否可以gunzip使用一個命令/腳本對多個文件進行重命名。

我有一堆格式為以下的文件:

test.20120708191601.DAT.3599502593.gz
test.20120708201601.DAT.99932140.gz
test.20120708204600.DAT.1184686967.gz
test.20120708212100.DAT.824089664.gz
test.20120708215100.DAT.1286044098.gz
test.20120708222100.DAT.1414234861.gz

我需要gunzip它們並刪除 , 之後的所有內容.DAT,格式如下:

test.20120708191601.DAT
test.20120708201601.DAT
test.20120708204600.DAT
test.20120708212100.DAT
test.20120708215100.DAT
test.20120708222100.DAT

答案1

嘗試這個:

for file in *.gz; do
  gunzip -c "$file" > "${file/.DAT*/.DAT}"
done

此方法使用gunzip的選項將未壓縮的流輸出到標準輸出 ( -c),因此我們可以將其重定向到另一個文件,而無需第二次重命名呼叫。重新命名是在檔案名稱變數本身上完成的,使用bash替換(匹配任何通配模式.DAT*並將其替換為.DAT)。循環本身只是迭代當前目錄中名稱以.gz.

相關內容