検索: 'zip':そのファイルまたはディレクトリはありません。

検索: 'zip':そのファイルまたはディレクトリはありません。

私はWSL(Ubuntu)を使用しており、ファイルを複数のサブフォルダに再帰的に圧縮したいと思います。

つまり

Main Folder .
  SubFolder 1's files get zipped into a .zip
  SubFolder 2's files get zipped into a .zip
  SubFolder 3's files get zipped into a .zip
  SubFolder 4's files get zipped into a .zip
  SubFolder 5's files get zipped into a .zip

etc.

ホームフォルダに移動して、次を実行します。

find . -type d -maxdepth 1 -execdir zip -r '{}.zip' '{}' \;

これを行った後、次のスパムメールが届きました。

検索: 'zip':そのファイルまたはディレクトリはありません。

exec私も代わりに使用して同じ行を試しましたが、execdir同じ結果を得ました。誰でも問題を指摘できますか?

答え1

このエラーは、コマンドがインストールされていないことを意味しますzip。テストしてみてください。command -v zip;空の出力はインストールされていないことを意味します。インストールしてくださいsudo apt install zip


zipファイルを各ディレクトリに分割する入らないようにするcommnadのディレクトリ-jにオプションを追加する必要があります。zip

find . -mindepth 1 -maxdepth 1 -type d -execdir zip -jr '{}.zip' '{}' \;

-maxdepth以前にオプションを指定し、現在のディレクトリ圧縮を無視するか、2つを次に置き換えるオプションも-type d追加する必要があります。-mindepth 1[ ! -name . -prune; POSIX照会を特定の深さに制限しますか? ]したがって、コマンドは次のようになります。

find . ! -name . -prune -type d -execdir zip -jr '{}.zip' '{}' \;

または for ループを使用できます。

for thing in ./*; do
    [[ -d "${thing}" ]] && zip -jr "${thing}.zip" "${thing}";
done

使用されたオプションのために-j異なるサブディレクトリから単一のzipファイルとして収集された類似の名前を持つファイルがある場合、コマンドは同じファイル名のために圧縮を停止します。

関連情報