[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Instead of giving the names of files or archive members on the command
line, you can put the names into a file, and then use the
`--files-from=file-of-names' (`-T
file-of-names') option to tar
. Give the name of the
file which contains the list of files to include as the argument to
`--files-from'. In the list, the file names should be separated by
newlines. You will frequently use this option when you have generated
the list of files to archive with the find
utility.
Get names to extract or create from file file-name.
If you give a single dash as a file name for `--files-from', (i.e.,
you specify either --files-from=-
or -T -
), then the file
names are read from standard input.
Unless you are running tar
with `--create', you can not use
both --files-from=-
and --file=-
(-f -
) in the same
command.
Any number of `-T' options can be given in the command line.
The following example shows how to use find
to generate a list of
files smaller than 400K in length and put that list into a file
called `small-files'. You can then use the `-T' option to
tar
to specify the files from that file, `small-files', to
create the archive `little.tgz'. (The `-z' option to
tar
compresses the archive with gzip
; see section Creating and Reading Compressed Archives for
more information.)
$ find . -size -400 -print > small-files $ tar -c -v -z -T small-files -f little.tgz |
In the file list given by `-T' option, any file name beginning
with `-' character is considered a tar
option and is
processed accordingly(14). For example,
the common use of this feature is to change to another directory by
specifying `-C' option:
$ cat list -C/etc passwd hosts -C/lib libc.a $ tar -c -f foo.tar --files-from list |
In this example, tar
will first switch to `/etc'
directory and add files `passwd' and `hosts' to the
archive. Then it will change to `/lib' directory and will archive
the file `libc.a'. Thus, the resulting archive `foo.tar' will
contain:
$ tar tf foo.tar passwd hosts libc.a |
If you happen to have a file whose name starts with `-',
precede it with `--add-file' option to prevent it from
being recognized as an option. For example: --add-file=--my-file
.
6.3.1 NUL -Terminated File Names |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
NUL
-Terminated File Names The `--null' option causes
`--files-from=file-of-names' (`-T file-of-names')
to read file names terminated by a NUL
instead of a newline, so
files whose names contain newlines can be archived using
`--files-from'.
Only consider NUL
-terminated file names, instead of files that
terminate in a newline.
Undo the effect of any previous `--null' option.
The `--null' option is just like the one in GNU
xargs
and cpio
, and is useful with the
`-print0' predicate of GNU find
. In
tar
, `--null' also disables special handling for
file names that begin with dash.
This example shows how to use find
to generate a list of files
larger than 800K in length and put that list into a file called
`long-files'. The `-print0' option to find
is just
like `-print', except that it separates files with a NUL
rather than with a newline. You can then run tar
with both the
`--null' and `-T' options to specify that tar
gets the
files from that file, `long-files', to create the archive
`big.tgz'. The `--null' option to tar
will cause
tar
to recognize the NUL
separator between files.
$ find . -size +800 -print0 > long-files $ tar -c -v --null --files-from=long-files --file=big.tar |
The `--no-null' option can be used if you need to read both
NUL
-terminated and newline-terminated files on the same command line.
For example, if `flist' is a newline-terminated file, then the
following command can be used to combine it with the above command:
$ find . -size +800 -print0 | tar -c -f big.tar --null -T - --no-null -T flist |
This example uses short options for typographic reasons, to avoid very long lines.
GNU tar
lists, so in many cases it is safe to use them even without the
`--null' option. In this case tar
will print a
warning and continue reading such a file as if `--null' were
actually given:
$ find . -size +800 -print0 | tar -c -f big.tar -T - tar: -: file name read contains nul character |
The null terminator, however, remains in effect only for this particular file, any following `-T' options will assume newline termination. Of course, the null autodetection applies to these eventual surplus `-T' options as well.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated on July, 28 2014 using texi2html 1.76.