Linux
如何解壓文件夾中的所有 .tgz 文件並寫入具有不同命名約定的新文件
我的文件夾包含許多**.tgz文件,每個未壓縮的文件都有相同**的文件名“ 000000_0 ”。
有人可以在下面給我寫一個命令嗎?
1. Untar all the .tgz files from a folder 2. rename each uncompressed file based on the .tgz file name
比如 2017-07-01.tgz -> 我想把解壓後的文件重命名為“ 2017-07-01.dat ”
假設我在一個目錄中有 .tgz 文件的列表:
2017-07-01.tgz 2017-07-02.tgz 2017-07-03.tgz 2017-07-04.tgz 2017-07-05.tgz
注意:每個 .tgz 文件裡面只有一個文件,“ 000000_0 ”。
使用
gnu parallel
:$ parallel 'tar -xf {} --to-stdout > {.}.dat' ::: *.tgz
對於每個
.tgz
文件,文件是未壓縮的 (-xf
) 並且文件的內容流式傳輸標準輸出 (--to-stdout
)。因此,我們可以使用壓縮文件的基本名稱 ( )將其重定向 (>
) 到具有新文件名的文件{.}.dat
沒有
gnu parallel
:for file in *.tgz; do tar -xf $file --to-stdout > $(basename -s .tgz $file).dat; done
如果
basename
版本太舊,則-s
參數不存在。改為使用$(basename $file .tgz)
。這也應該適用於目前版本。