ファイルの名前を指定して情報をtar
にパイプするにはどうすればよいですか?
何かのようなもの:
tar cfz foo.tgz -T -
ただし、これはすべての可能なファイル名で機能するわけではないことに注意してください。 --null
オプションを検討し、find -print0
からtar
をフィードする必要があります。 (xargs
の例は、複数のtar
コマンドを生成するため、大きなファイルリストではまったく機能しません。)
すでにgeekosaurが指摘しているように、find ... -print0 | tar --null ...
を使用してfind
の出力を直接xargs
にパイプすることが可能であるため、find
の出力をtar
にパイプする必要はありません。
ただし、アーカイブファイルを除外する場合のgnutar
とbsdtar
のわずかな違いに注意してください。
# exclude file.tar.gz anywhere in the directory tree to be tar'ed and compressed
find . -print0 | gnutar --null --exclude="file.tar.gz" --no-recursion -czf file.tar.gz --files-from -
find . -print0 | bsdtar --null --exclude="file.tar.gz" -n -czf file.tar.gz -T -
# bsdtar excludes ./file.tar.gz in current directory by default
# further file.tar.gz files in subdirectories will get included though
# bsdtar: ./file.tar.gz: Can't add archive to itself
find . -print0 | bsdtar --null -n -czf file.tar.gz -T -
# gnutar does not exclude ./file.tar.gz in current directory by default
find . -print0 | gnutar --null --no-recursion -czf file.tar.gz --files-from -
拡張 ギークサウルスの答え :
find /directory | tar -cf archive.tar -T -
-T
オプションを指定してstdinを使用できます。
何らかの条件(たとえば-name
オプション)を使用してファイルをフィルタリングする場合、一般的にパイプで除外ディレクトリが必要です。そうでない場合、tarはすべてのコンテンツを処理します。 。だから、使用する:
find /directory -type f -name "mypattern" | tar -cf archive.tar -T -
-type
を使用しない場合、"mypattern"
に一致するディレクトリのすべてのコンテンツが追加されます!
find /directory > filename
tar -T filename -cf archive.tar
パイプを使用する代わりに、バックティックを使用できます、例:
tar cvzf archive.tgz `ls -1 *`
の代わりに ls -1 *
ファイルのアーカイブに必要なリストを作成する他のコマンドを配置できます。
圧縮率を高めるには、bzip2を使用すると役立つ場合があります。
find $PWD -name "*.doc" > doc.filelist
tar -cvjf jumbo.tar.bz2 -T doc.filelist
tar
プログラムはさまざまな方法で実装されています。たとえば、IBMのUnixバージョンでは、 [〜#〜] aix [〜#〜] 、 tar
は-L
ではなく-T
オプションを使用し、-
がstdinを示すことを許可するのではなくファイルを必要とします。
Usage: tar -{c|r|t|u|x} [ -BdDEFhilmopRUsvwZ ] [ -Number ] [ -f TarFil e ]
[ -b Blocks ] [ -S [ Feet ] | [ Feet@Density ] | [ Blocksb ] ]
[ -L InputList ] [-X ExcludeFile] [ -N Blocks ] [ -C Directory ] File ...
Usage: tar {c|r|t|u|x} [ bBdDEfFhilLXmNopRsSUvwZ[0-9] ] ]
[ Blocks ] [ TarFile ] [ InputList ] [ ExcludeFile ]
[ [ Feet ] | [ Feet@Density ] | [ Blocksb ] ] [-C Directory ] File ...