bash
はい、そのコードフラグメントはスクリプトのように見えます。名前が付いている場合は、を使用して実行filename.bat
できるはずです。sudo bash filename.bat
このコードは、現在のディレクトリがすべてのzipファイルを含む「親フォルダ」であると想定しています。ファイルを含むサブディレクトリを処理するようにコードを変更する必要があり.zip
ます。それを行うには多くの方法があります。
ファイル以外の形式を処理する必要がある.zip
場合は、解凍するファイルとして引数として指定されたファイル名を使用するようにコードを修正することになるでしょう。
このコードは機能する可能性があります。
for file in "$@"
do
dir=$(dirname "$file")
extn=${base##*.}
base=$(basename "$file" .$extn)
mkdir -p "$dir/$base"
(
cd "$dir/$base"
case $extn in
zip) unzip "../$base.$extn";;
esac
)
done
これで、理論的には、ステートメント内の拡張子のリストを拡張してcase
、他のファイル形式を含めることができます。ただし、すべてのコンプレッサーが複数のファイルをパッケージ化するわけではないことに注意してください。.tar.gz
通常、または.tar.xz
またはなどの複合形式があります.tar.bz2
。.tar
対応するコンプレッサー(またはデコンプレッサー)は、内部のファイルからデータを抽出せずに、ファイルを単純に解凍します(圧縮サフィックスを失います) 。ただし、とがのように動作するrar
場合は、次を使用できます。7z
zip
case $extn in
(zip) unzip "../$base.$extn";;
(rar) unrar "../$base.$extn";; # Or whatever the command is
(7z) un7z "../$base.$extn";; # Or whatever the command is
(*) echo "$0: unrecognized extension $extn on $file" >&2;;
esac
必要に応じて、コードを復元してファイルの圧縮形式を削除することもできます。