回答:
したがって、私が正しく理解していれば、特定のフォルダーにファイルとフォルダーをアーカイブしようとしていますが、ルートフォルダーは含まれていません。
例:
/test/test.txt
/test/test2.txt
test.txtとtest2.txtはzipに保存されますが、/ test /は保存されません
/ test /ディレクトリにcdして、次のように実行できます。
zip -r filename.zip ./*
これは、filename.zipという名前の同じフォルダーにアーカイブを作成します。または、実行できるフォルダ外から実行する場合、
zip -r test.zip test/*
/ *は、フォルダー全体ではなく、フォルダーの内容のみを含む部分です。
編集:OPは複数のzipを望んでいたので、解決策はちょっとしたハックになりました。これを行うより良い方法があるかどうか興味があります。
for d in */ ; do base=$(basename "$d") ; cd $base ; zip -r $base * ; mv "${base}.zip" .. ; cd .. ; done;
for d in */ ; do base=$(basename "$d") ; zip -rj "${base}.zip" "$d" ; done;
zip -r test.zip test/*
機能しません。ディレクトリ外からこれを達成する正しい方法はありますか?
zipコマンドで-j
または--junk-paths
オプションを使用します。
-j --junk-paths Store just the name of a saved file (junk the path), and do not store directory names. By default, zip will store the full path (relative to the current directory).
お役に立てれば。
(cd directory && zip -r ../out.zip .)
メインシェルを同じディレクトリに保持し、コマンド後に終了するサブシェルのディレクトリのみを変更します。