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

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

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

zip -r zipfile.zip directory

また、-xオプションを使用してファイルを除外できることも知っているので、これが機能すると思いました:

zip -r zipfile.zip directory -x .*

うまくいかなかった すべての隠しディレクトリはzipファイルに残っていました。

まず、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"

これは、ファイル名に一致する特定のファイル拡張子またはパターンに対して変更できます。

を除外する。gitまたは。Zipアーカイブからの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 "*/\.*"

これにより、非表示のディレクトリ内の隠しファイルも除外されます:

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

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

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

これにより、aで始まるファイルが生成されます . あなたのzipファイルに追加されないようにします。

rinzwind@discworld:~/tmp$ ls -ladrwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 tmpdrwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 .tmprinzwind@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%)

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

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

より良い圧縮が、遅い :

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

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

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

正しい方法は次のようになります:

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

一部のファイル拡張子を除いてdirsを圧縮しながら:

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

ディレクトリ内の隠しフォルダやファイルなし:

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