私はその中にたくさんの隠しフォルダー/ファイルがあるプロジェクトを持っています。 Zipアーカイブを作成したいのですが、アーカイブ内に非表示のフォルダー/ファイルがあってはなりません。非表示フォルダー内のファイルが非表示になっていない場合、それらも含めるべきではありません。
次のようなディレクトリのZipアーカイブを作成できることを知っています。
Zip -r zipfile.Zip directory
また、-xオプションを使用してファイルを除外できることもわかっているので、これが機能する可能性があると考えました。
Zip -r zipfile.Zip directory -x .*
うまくいきませんでした。すべての隠しディレクトリはまだZipファイルにありました。
これにより、隠されていないディレクトリの隠しファイルも除外されます。
find /full_path -path '*/.*' -Prune -o -type f -print | Zip ~/file.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"
ファイル名に一致する特定のファイル拡張子またはパターンに合わせて変更できます。
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 "*/\.*"
"
を.*
に追加します(そうでない場合、シェルは.*
を現在のディレクトリのドットファイルに展開します)。また、サブディレクトリの隠しファイルも除外します。
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%)
これにはすべての「。」が含まれます。ディレクトリ、サブディレクトリ、および「。」ディレクトリ内のファイルまたはディレクトリ...基本的に最初の回答ですが、トップレベルの「。」が含まれます。ファイル。
find /full_path -path '*.*/.*' -Prune -o -type f -print | Zip ~/file.Zip -@
で始まるすべてのフォルダーを除外する例:
tar cvpzf folder.tgz folder/ --exclude '.*'
圧縮率は高いが、遅い:
tar cvpjf folder.tar.bz2 folder/ --exclude '.*'
正しい方法は次のとおりです。
Zip -r zipfile.Zip directory -x directory/.*
一部のファイル拡張子を除いてディレクトリを圧縮している間:
$ 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%)