NUL
-Terminated File NamesThe --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.
NUL
-terminated file names, instead of files that
terminate in a newline.
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 is able to automatically detect NUL
-terminated file lists, so
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.