そのため、各フォルダーを1つの大きなZipファイルではなく、独自のZipアーカイブに圧縮できるスクリプトを作成したいと思います。
例として、私はディレクトリを持っています:
+ MyDirectory/
| |
| + Folder_01/
| |
| + Folder_02/
| |
| + Folder_03/
|
MyDirectory
でスクリプトの実行が完了すると、MyDirectory
内にある各フォルダーのZipファイルが作成されます。Folder_01.Zip
、Folder_02.Zip
およびFolder_03.Zip
。私はいくつかのBASHを知っていますが、これは私が理解できないものです。
これはどのように行うことができますか?
敬具。
for i in *
do
[ -d "$i" ] && Zip -r "$i.Zip" "$i"
done
すべてのディレクトリを調べて、それぞれにZipを作成します。
またはさらに簡潔に:
for i in */; do Zip -r "${i%/}.Zip" "$i"; done
(提案してくれたdamienfrancoisに感謝します)。
ここに
for i in */; do tar -czvf "${i%/}.tar.gz" "$i"; done
より小さな出力が必要な場合は、 xz
アルゴリズムの使用を検討してください(プロセスが長くなります)。
for d in */ ; do
outName=$d;
outName=${outName// /\-};
outName=${outName//[!0-9a-z-]};
dirName=$d;
dirName=${dirName//\/}
tar -c "$dirName" | xz -e > $outName.tar.xz
done
このコードは、フォルダ名をサニタイズし、現在のディレクトリ内のすべてのフォルダに対して.tar.xz
を生成します。