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


220

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

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

zip -r zipfile.zip directory

また、-xオプションでファイルを除外できることも知っているので、これでうまくいくと思いました。

zip -r zipfile.zip directory -x .*

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

回答:


107

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

find /full_path -path '*/.*' -prune -o -type f -print | zip ~/file.zip -@

2
ご回答有難うございます。コマンド(find community-chess/ -path '*/.*' -prune -o -type f -print | zip ~/community-chess.zip -@)は予想よりも長いですが、正常に機能します。サブディレクトリも含まれているので、+ 1と受け入れられた回答:
マーティントーマ

105

まず、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 "*/\.*"

5
仲間のUbuntuユーザーを支援してくれてありがとう。受け入れられた回答を新しい回答に再統計すると、混乱が増し、削除のフラグが立てられる可能性が高くなることに注意してください。
hmayag

54

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

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%)

1
あなたの最後の発言が正しいとは思いません。.*シェルによって展開されます。
ハマー

1
私はそれが正しい可能性が高いと思いますが、私はそれを削除しました(それについては
わかり

これは機能しませんでした。.svn-ディレクトリが追加されました
マーティン・トーマ

1
@moose除外パターンは、ファイルベース名だけでなくフルパスに一致するため*/.*、同様に除外する必要があります.**/空でないディレクトリのシーケンスに一致します)。
ジル

これは何も変更せずに実行されます!ベストアンサー。
ホワイトキャット

8

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

find /full_path -path '*.*/.*' -prune -o -type f -print | zip ~/file.zip -@

8

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

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

圧縮率は高いが、遅い:

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

5

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

zip -r zipfile.zip directory -x directory/.*

@downvoter:何が問題なのか、これは私のために働いているようです。
ジョブイン

Rinzwindの元の答え(現在修正済み)と同じ問題:サブディレクトリを除外していません。そして、Rinzwindが述べたように、ワイルドカードを引用する必要があります。引用しない場合、シェルはそれらを展開します。
ジル

4

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

$ cd /path/to/dir
$ zip -r dir.zip . -x "*.log" -x "*.cache"

3

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

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%)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.