ダウンロードした zip ファイルを展開し、もとの zip ファイルは削除するスクリプト
Published Feb 5, 2025
⋅
Updated Mar 12, 2025
caution
次のコマンドは rm
を使っているので、重要なファイルがダウンロードディレクトリにある場合は使用しないでください。
もしくは、 trash-cli
の trash-put
などで代用してください。
find ~/Downloads -name '*.zip' | xargs -I {} sh -c 'unzip {} -d ~/Downloads/$(basename {} .zip) && rm {}'
find
コマンドで ~/Downloads
ディレクトリ以下の .zip
ファイルを検索し、一致したファイル名を xargs
に渡す。
-I {}
でプレースホルダーを使い、引数の位置を指定できるようにする。ちなみに -I {}
を使った場合は、それぞれのインプット行に対してコマンドが実行される。
プレースホルダーの値を複数のコマンドに渡したい場合は sh -c
を実行し、コマンド文字列を作り、文字列をコマンドとして実行する必要がある。
コマンド文字列内では unzip
コマンドを使う(unzip コマンドで ZIP ファイルからファイルを取り出す も参照)。その引数として xargs
に渡されたものを使用する。
-d
オプションで展開先を指定しているが、その中でコマンド置換を使って basename
を実行。 xargs
に渡されたパスからディレクトリ部分と拡張子を取り除いている。
最後に rm {}
とし、 xargs
に渡されたファイルを削除する。
参考