CentOSでファイルを1つずつ圧縮・解凍してみる

CentOSでファイルを1つずつ圧縮・解凍してみる。

1つずつ圧縮

現状、下記の状態。

$ ls
aaa.txt
bbb.txt
ccc.txt

findのexecオプションを使うと1つずつ圧縮できる。

$ find -name "*.txt" -exec tar zcvf {}.tar.gz {} \;

実行した結果、下記のようになる。

$ ls
aaa.txt
aaa.txt.tar.gz
bbb.txt
bbb.txt.tar.gz
ccc.txt
ccc.txt.tar.gz

1つずつ解凍

一旦、txtファイルを削除して、tar.gzのみの状態にする。

$ rm *.txt
$ ls
aaa.txt.tar.gz
bbb.txt.tar.gz
ccc.txt.tar.gz

解凍は下記のコマンドでできる。

$ find -name "*.tar.gz" -exec tar zxvf {} \;

実行した結果、下記のようになる。

$ ls
aaa.txt
aaa.txt.tar.gz
bbb.txt
bbb.txt.tar.gz
ccc.txt
ccc.txt.tar.gz

1つずつ圧縮(元ファイル削除)

tar.gzを削除して、元の状態に戻す。

$ rm *.tar.gz
$ ls
aaa.txt
bbb.txt
ccc.txt

--remove-filesを付けると、圧縮後、元ファイルを削除してくれる。

$ find -name "*.txt" -exec tar zcvf {}.tar.gz {} --remove-files \;

実行した結果、下記のようになる。

$ ls
aaa.txt.tar.gz
bbb.txt.tar.gz
ccc.txt.tar.gz

1つずつ解凍(元ファイル削除)

解凍後、元ファイルを削除するオプションが見つからなかったので、
下記のような感じで無理やり元ファイルを削除してみる。

$ find -name "*.tar.gz" -exec tar zxvf {} \; -exec rm {} \;

エラーがあった場合など問題ないかよく分からないが
実行した結果、とりあえず下記のようになった。

$ ls
aaa.txt
bbb.txt
ccc.txt