5つのフォルダがあるフォルダがありますall_folders
。
./all_folders
./all_folders/folder1
./all_folders/folder2
./all_folders/folder3
./all_folders/folder4
./all_folders/folder5
1つのコマンドを使用してこれらのすべてのフォルダを一度に圧縮できますか?all_folders
ディレクトリに移動し、そのディレクトリ内の個々のフォルダを圧縮するようにコマンドを実行したいと思います。
予想される出力は次のとおりです。
私がするとき
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を使用)などを使用したいとします。
「圧縮されたディレクトリ」ではなく、「圧縮されたアーカイブ」で終わることに注意してください。アーカイブ自体はファイルであり、ディレクトリはファイルにすぎないため、これらの項目は置き換えることはできません。インデックスノードデータグラム。