複数のディレクトリを別々のzipファイルに圧縮する方法

複数のディレクトリを別々のzipファイルに圧縮する方法

私はターミナルを初めて使用しましたが、ここで複数のディレクトリを別々の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

ディレクトリを圧縮すると「zip警告:名前の不一致」が発生する

関連情報