異なるサブフォルダーを一括圧縮するにはどうすればいいですか?

異なるサブフォルダーを一括圧縮するにはどうすればいいですか?

all_folders5 つのフォルダーを含むフォルダーがあります:

./all_folders
./all_folders/folder1
./all_folders/folder2
./all_folders/folder3
./all_folders/folder4
./all_folders/folder5

all_foldersこれらすべてのフォルダーを 1 つのコマンドで一度に圧縮できますか?ディレクトリに移動してコマンドを実行し、このディレクトリ内の個々のフォルダーを圧縮したいと思います。

期待される出力は

私がする時

ls 

all_folders場合、ディレクトリは 10 個になります。5 つは圧縮されていないもので、5 つは圧縮されたものです。

答え1

cdに入力しall_folders、実行する

for i in folder1 folder2 folder3 folder4 folder5; do tar czf $i.tar.gz $i; done

答え2

何を達成しようとしているのかがやや不明瞭です。ここではサブディレクトリのみを圧縮するというユースケースを実行しています。

まず、ディレクトリのコレクションを含むディレクトリに移動し、次の操作を実行します。

find -maxdepth 1 -type d | {
    while read dir; do 
        if [ ! "x${dir#*/}" = "x." ]; then
            tar cJf ${dir#*/}.tar.xz ${dir#*/};
        fi;
    done
}

これは と併用するとうまく機能しますzsh。テストするには、echoの前にを入れてtar、コマンドが機能するかどうかなどを確認します。

ただし、このようにアーカイブのコレクションを作成することは、通常は望ましくありません。通常は、コレクション全体を圧縮するか、これらのファイルが存在するドライブの透過的な圧縮を使用するか、トランスポート圧縮 (X-DEFLATEたとえば、HTTP を使用) を使用するかのいずれかが必要になります。

「圧縮されたディレクトリ」ではなく「圧縮されたアーカイブ」が作成されることに注意してください。アーカイブはファイルそのものです。一方、ディレクトリは単なるファイルであるため、これらのものは互換性がありません。iノードデータグラム。

答え3

tar -zcvf archive.tar.gz directory/ 

これにより、tar はディレクトリ内のファイルからアーカイブを c (作成) し (tar はデフォルトで再帰的)、それを z (gzip) アルゴリズムを使用して圧縮し、出力を archive.tar.gz という名前の af (ファイル) として保存し、アーカイブに追加するすべてのファイルを v (詳細) にリストします。

アーカイブを現在のディレクトリに解凍するには、

tar -zxvf archive.tar.gz 

ここに画像の説明を入力してください

関連情報