linuxubuntutarhidden-files

archiving hidden directories with tar


tar on a directory mydir will archive hidden files and hidden subdirectories, but tar from within mydir with a * wildcard will not. Is this a known inconsistency or bug?

Edit: Additional information. tar from within mydir with a * wildcard will not "see" nor archive hidden files and hidden subdirectories in the immediate directory. However, in the non-hidden subdirectories of mydir hidden files and hidden subdirectories will be archived. In other words, deeper in the directory tree the hidden objects will be archived.


Solution

  • The answer is that the * wildcard is handled by the shell and it just does not expand to things that start with a dot. The other wildcard ? also does not expand to things that start with a dot. Thanks to Keith for pointing out it is the shell that does the expansion and so it has nothing to do with tar.

    If you use shopt -s dotglob then expansion will include things like .filename. Thanks to Andy.

    Use shopt -u dotglob to turn it off.

    Switching the dotglob option does not change ls itself. Rather it just changes expansion behaviour as exhibited in something like ls *.

    Edit: My recommendations are in a comment below.