7Zip-コマンドライン:ワイルドカードパターンでフォルダーを除外しますか?


108

コマンドラインの7zipコマンドからワイルドカードパスを除外する方法はありますか?

私はこのようなことをしています:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0

「FolderToArchive」の下にあるフォルダ\bin\*.*または\obj\*.*フォルダを除外したい。

ファイルを除外するには、-xパラメーターを使用できます。ヘルプファイルには、次の使用例が示されてい-xます。

7z a -tzip archive.zip *.txt -x!temp.*

ファイルを除外するのに最適です。しかし、再び、ワイルドカードで指定されたフォルダーを除外したいと思います。「FolderToArchive」の下には複数のフォルダーがあり、それらのフォルダーの下にはフォルダーがある場合とない場合がbin\ありobj\ます。これらをアーカイブに含めないことを希望します。

私は次のようなパターンを試しました

-x!bin\*
-x!bin\*.*
-x!\bin\*
-x!\bin\*.*
-x!\\bin\\*
-x!\\bin\\*.*

bin\フォルダを除外するものはありません。これは単に7zipの制限ですか?

回答:


132

binおよびobjフォルダーを再帰的に除外するには、次のコマンドを使用できます。

7z.exe a -t7z archive.7z FolderToArchive\ -mx0 -xr!bin -xr!obj

5
それ以外の場合:ルートディレクトリ内のファイルのみを無視する場合は-xr0!*.zip、少なくとも-を使用しないと機能しませんr0
オリバー

6
また、これがLinux / Unixコマンドラインにある場合'-x!$RECYCLE.BIN'は、外部ドライブのごみ箱を除外するなど、シェルによる前処理を追加しないために、単一引用符で囲む必要があります。
-thanosa75

15

バグを回避するには、-rまたは-xrを慎重に使用してください。

次のようなディレクトリがあるとします:

.\path1\path2\bin
.\path1\path2\src
.\path3\path4\path5\bin
.\path3\path4\path5\src

コマンドを実行します:

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -xr!bin

archive.7zで得たもの:

.\path2\src
.\path5\src

つまり、.\path2\.\path5\なったトップフォルダを archive.7zで、両方binのディレクトリは除外しました。

-xは、アーカイブの最上位フォルダーからの相対パス/ファイル名のみをサポートします。

したがって、除外するだけで.\path1\path2\bin、他のすべての「bin」ディレクトリを含める場合、コマンドは次のようになります。

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -x!path2\bin

-xで絶対パスを使用しようとしましたが、成功しませんでした。


更新:

-spfLinux用の7zには、絶対パスで機能するオプションがあります。

Marcoによると、-spfWindowsでも7-zip 15.14から入手可能です


2
注意:少なくともUbuntuの上のあなたが最良の単一引用符内のすべてのものを-x用語を置くことをお勧めします'-x!path2\bin'シェル置換に実行しないように...(あなたがはるかに長く、文法的に間違って「コマンド」を取得...)
フランクNocke

@FrankNockeのコメントを参照するには、あなたはまた、フォルダ名にドットを許可するようにWindows上でこれを行うことができます:'-xr!\.foo'
DonBecker
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.