Go to the first, previous, next, last section, table of contents.


Changing the Working Directory

@FIXME{need to read over this node now for continuity; i've switched things around some.}

@UNREVISED

To change the working directory in the middle of a list of file names, either on the command line or in a file specified using --files-from=file-of-names (-T file-of-names), use --directory=directory (-C directory). This will change the working directory to the directory directory after that point in the list.

--directory=directory
-C directory
Changes the working directory in the middle of a command line.

For example,

$ tar -c -f jams.tar grape prune -C food cherry

will place the files `grape' and `prune' from the current directory into the archive `jams.tar', followed by the file `cherry' from the directory `food'. This option is especially useful when you have several widely separated files that you want to store in the same archive.

Note that the file `cherry' is recorded in the archive under the precise name `cherry', not `food/cherry'. Thus, the archive will contain three files that all appear to have come from the same directory; if the archive is extracted with plain `tar --extract', all three files will be written in the current directory.

Contrast this with the command,

$ tar -c -f jams.tar grape prune -C food red/cherry

which records the third file in the archive under the name `red/cherry' so that, if the archive is extracted using `tar --extract', the third file will be written in a subdirectory named `orange-colored'.

You can use the `--directory' option to make the archive independent of the original name of the directory holding the files. The following command places the files `/etc/passwd', `/etc/hosts', and `/lib/libc.a' into the archive `foo.tar':

$ tar -c -f foo.tar -C /etc passwd hosts -C /lib libc.a

However, the names of the archive members will be exactly what they were on the command line: `passwd', `hosts', and `libc.a'. They will not appear to be related by file name to the original directories where those files were located.

Note that `--directory' options are interpreted consecutively. If `--directory' specifies a relative file name, it is interpreted relative to the then current directory, which might not be the same as the original current working directory of tar, due to a previous `--directory' option.

@FIXME{dan: does this mean that you *can* use the short option form, but you can *not* use the long option form with --files-from? or is this totally screwed?}

When using `--files-from' (see section Reading Names from a File), you can put `-C' options in the file list. Unfortunately, you cannot put `--directory' options in the file list. (This interpretation can be disabled by using the --null option.)


Go to the first, previous, next, last section, table of contents.