多くのコンテンツを含むフォルダがあります。.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ファイルには1つのファイルしかありません。000000_0」。
答え1
使用gnu parallel
:
$ parallel 'tar -xf {} --to-stdout > {.}.dat' ::: *.tgz
各.tgz
ファイルに対してファイルが解凍され(-xf
)、ファイルの内容がstdoutにストリーミングされます(--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)
。これは現在のバージョンでも機能します。