Question

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 longstanding and 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.

Was it helpful?

Solution 3

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.

OTHER TIPS

With wildcard it will not work. You have to specify . (current directory) if you mean full directory including hidden files. You can do

tar -cvpzf test.tgz .

You can use:

tar -cvpzf test.tgz * .??*

But, this works only for hidden files with names > 2 (to prevent '.' and '..')

You can compress all the files / folders in your current directory (including .hidden) by using:

tar -zcvf compressed.tgz `ls -A -1`

The last argument are the folders you want to compress. If you pass it ls -A -1 , you are passing it all folders in your current directory but . and .. . When it comes to subdirectories, .hidden files are already included in the compression by default.

The shell expands the wildcards so tar doesn't even see it. You have to add them explicitly if you want to do that. (.*). However, it's most common to tar a single directory so that when you untar it all goes to the same place.

shopt -s dotglob

this will make the

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top