私はMac、El Capitanを使用しています。
私のzipファイル構造:
README.md
source/README.md
ディレクトリの--exclude
ルートレベルを除いては動作しないようです。README.md
source
私は次のようなさまざまなバリエーションを試しました。
# Doesn’t exclude anything:
tar -xf master.zip --strip-components 1 --exclude=/README.md
tar -xf master.zip --strip-components 1 --exclude=/{install.sh,README.md}
# Excludes both files:
tar -xf master.zip --strip-components 1 --exclude=./README.md
tar -xf master.zip --strip-components 1 --exclude={install.sh,README.md}
tar -xf master.zip --strip-components 1 --exclude=./{install.sh,README.md}
質問:
どうすれば除外できますか?ただルートレベルREADME.md
ベストアンサー1
実際、tarは次のファイルを除外できます。--anchored
パターン一致ファイル名の開始
ただし、完全なファイルパスを作成する必要があります(したがってパスも変更されますcd
)。
$ cd /where/source/lives
$ tar -cf master.zip --anchored --exclude={source/install.sh,README.md} -- *
柔軟性が必要な場合はfindを使用してください。このコマンドを使用して、基本ファイルを拒否し、圧縮する
ファイルのリストを生成できます。! -name README.md
README.md
$ path="/path/to/files"
$ find "$path/" ! -path "$path"/README.md -print
スラッシュに注意してください/
。本当に重要です。圧縮する正しいファイルのリストが含まれている場合は、それを挿入するだけですtar
(追加0
および-print
生成tar
コマンド)。
find "$path/" ! -path "$path"/README.md -print0 |
tar --no-recursion --null -T- --exclude=install.sh -v -cf master.zip
オプションは一致するために使用さtar
れます。--null
-print0
find
find
必要なすべての再帰が提供されますので、tarのオプションを使用してください--no-recursion
。
また、ファイルはinstall.sh
まだ除外されていますtar
(削除された可能性がありますが、find
これは個人的な好みにすぎません)。
本番環境では、-v
よりきれいなtarコマンドのためにこのオプションを削除してください。
解凍するには(上記のように圧縮するのではなく)、次のコマンドを使用します。
tar -xf master.zip --anchored --exclude={source/install.sh,README.md}
または、2番目のオプションを使用してzipファイルを生成すると、除外されたファイルは内部に含まれません。master.zip
実行する必要がある作業は次のとおりです。
tar -xf master.zip