我想知道是否可以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
.