私はターミナルを初めて使用しましたが、ここで複数のディレクトリを別々のzipファイルに圧縮できる次のコードを含む記事を見つけましたが、一度だけ動作させました。コードは次のとおりです。
for i in */; do zip ‐r "${i%/}.zip" "$i"; done
ただし、今すぐ使用すると、次のエラーが発生します。
zip warning: name not matched:
フォルダを確認すると-r.zip
ファイルが生成されます。
答え1
zipにはまずzipファイルが必要なようです。
for i in */; do zip "${i%/}.zip" -r "$i" ; done
答え2
ターミナルを初めて使用した場合は、おそらくマニュアルページの大変ですが、役に立つ世界について学びませんでした。 :D
man zip
コマンドラインでこれを行う場合、予想されるzip使用法は次のとおりです。
"Normally when an input pattern
does not match a file the "name not matched" warning is issued
"
If zip is not able to read a file, it issues a warning but continues.
See the -MM option below for more on how zip handles patterns that are
not matched and files that are not readable. If some files were
skipped, a warning is issued at the end of the zip operation noting how
many files were read and how many skipped."
まず、zipコマンドをecho "${i%/}"に置き換えて、出力が何であるかを確認します。特定のフォルダが問題を引き起こしているため、そのフォルダにアクセスできないか、名前が正しくありません。 1つのディレクトリ内のフォルダのみを表示するので、アクセスするディレクトリfind . -type d -readable
と実際に読み取る権限がないフォルダがあることを確認できます。
関連するUnix Stack Exchangeの回答:
https://stackoverflow.com/questions/20529851/zip-command-not-working