web-dev-qa-db-ja.com

隠しファイルなしでターミナル経由でディレクトリ全体のZipアーカイブを作成するにはどうすればよいですか?

私はその中にたくさんの隠しフォルダー/ファイルがあるプロジェクトを持っています。 Zipアーカイブを作成したいのですが、アーカイブ内に非表示のフォルダー/ファイルがあってはなりません。非表示フォルダー内のファイルが非表示になっていない場合、それらも含めるべきではありません。

次のようなディレクトリのZipアーカイブを作成できることを知っています。

Zip -r zipfile.Zip directory

また、-xオプションを使用してファイルを除外できることもわかっているので、これが機能する可能性があると考えました。

Zip -r zipfile.Zip directory -x .*

うまくいきませんでした。すべての隠しディレクトリはまだZipファイルにありました。

217
Martin Thoma

これにより、隠されていないディレクトリの隠しファイルも除外されます。

find /full_path -path '*/.*' -Prune -o -type f -print | Zip ~/file.Zip -@
107
arrange

まず、Zipをインストールしていない場合は、次のように最初にインストールします。

Sudo apt-get install Zip

次に、単にZipファイルを作成する場合:

Zip -r compressed_filename.Zip foldername

隠しファイルを除外する場合:

find /folder_path -path '*/.*' -Prune -o -type f -print | Zip ~/compressed_filename.Zip -@

Zipアーカイブからファイルを除外するhttp://osxdaily.com/2013/04/30/how-to-excludeから取得-files-from-a-Zip-archive /

Zipアーカイブを作成する際のファイル除外の基本は、特定の名前またはパターンに一致するファイルをアーカイブから除外するために使用される-xフラグを中心にしています。最も基本的なものは次のようになります。

Zip archive.Zip files -x "ExcludeMe"

つまり、「Nothanks.jpg」という名前の単一のファイルを除外できます

Zip archive.Zip images/ -x "Nothanks.jpg"

これが役立ついくつかの具体例を紹介しましょう。

Zipアーカイブから.DS_Storeファイルを除外する

これにより、通常表示されないMacメタデータ.DS_StoreファイルがZipアーカイブに含まれなくなります。これらはデフォルトでバンドルされています:

Zip -r archivename.Zip archivedirectory -x "*.DS_Store"

ただし、ディレクトリにサブディレクトリが含まれる場合は、そのコマンドの別のバリエーションを使用して、サブディレクトリからds_storeファイルも除外する必要があります。

Zip -r archive.Zip directory -x "*/\.DS_Store"

注:すべてのシェルがこのコマンドの引用符を必要とするわけではありませんが、bashシェル(OS Xのデフォルト)では、ワイルドカードとパターンで除外するために引用符を使用する必要があります。

Zipアーカイブから特定のファイルタイプを除外する

ワイルドカードを使用すると、拡張子に注目して特定の種類のすべてのファイルを除外することもできます。たとえば、次のコマンドは、.jpgファイルを除いたディレクトリ全体を圧縮します。

Zip -r archive.Zip directory -x "*.jpg"

ファイル名に一致する特定のファイル拡張子またはパターンに合わせて変更できます。

Zipアーカイブから.gitまたは.svnディレクトリを除外する

.gitとその内容を除いたディレクトリを圧縮します。

Zip -r zipdir.Zip directorytozip -x "*.git*"

.svnディレクトリを含めずにフォルダーを圧縮します。

Zip -r zipped.Zip directory -x "*.svn*"

Zipアーカイブからすべての隠しファイルを除外する

パターンとワイルドカードを使用できるため、.svnのようなディレクトリでも.bash_profileのような個別のファイルでも、ピリオドを前に付けることで作成された不可視のファイルまたはフォルダーの一部またはすべてを除外できます。または.htaccess

Zip -r archivename.Zip directorytozip -x "*.*"

または、すべてのサブディレクトリからすべての不可視ファイルを除外するには:

Zip -r archive.Zip directory -x "*/\.*"
102
M.A.K. Ripon

".*に追加します(そうでない場合、シェルは.*を現在のディレクトリのドットファイルに展開します)。また、サブディレクトリの隠しファイルも除外します。

Zip -r zipfile.Zip . -x ".*" -x "*/.*"

これにより、.で始まるファイルがZipファイルに追加されなくなります。

rinzwind@discworld:~/tmp$ ls -la
drwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 tmp
drwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 .tmp
rinzwind@discworld:~/tmp$ Zip -r zipfile.Zip . -x .*
adding: .tmp/ (stored 0%)
adding: tmp/ (stored 0%)
rinzwind@discworld:~/tmp$ Zip -r zipfile.Zip . -x ".*" -x "*/.*"
updating: tmp/ (stored 0%)
54
Rinzwind

これにはすべての「。」が含まれます。ディレクトリ、サブディレクトリ、および「。」ディレクトリ内のファイルまたはディレクトリ...基本的に最初の回答ですが、トップレベルの「。」が含まれます。ファイル。

find /full_path -path '*.*/.*' -Prune -o -type f -print | Zip ~/file.Zip -@
8
cosimnot

で始まるすべてのフォルダーを除外する例:

tar cvpzf folder.tgz folder/ --exclude '.*'

圧縮率は高いが、遅い:

tar cvpjf folder.tar.bz2 folder/ --exclude '.*'
8
Tigrouzen

正しい方法は次のとおりです。

Zip -r zipfile.Zip directory -x directory/.*
5
Rômulo Neves

一部のファイル拡張子を除いてディレクトリを圧縮している間:

$ cd /path/to/dir
$ Zip -r dir.Zip . -x "*.log" -x "*.cache"
4
K-Gun

ディレクトリに隠しフォルダーとファイルがない場合:

Zip -r zipfile.Zip directory/*

ディレクトリ:|── .git │   ├── src │   └── Work.file ├── .test │   └── .file └── test.file

$ Zip -r zipfile.Zip directory/*
adding: directory/src/ (stored 0%)
adding: directory/src/Work.file (stored 0%)
adding: directory/test.file (stored 0%)
3
Umanshield