tar --exclude-ignore 的行为不符合预期

tar --exclude-ignore 的行为不符合预期

如果我有文件结构

dir/
dir/.ignore
dir/file.ext
dir/subdir/
dir/subdir/other_file.ext

其中dir/.ignore包含一行,*.ext那么我期望命令

$ tar -czvf dir.tgz --exclude-ignore=.ignore dir

导致dir.tgz包含dir/.ignoredir/subdir/other_file.ext但不包含的dir/file.ext

但是使用 GNU tar 版本 1.34(包含在 Ubuntu 22.04 中)运行该命令会得到以下结果:

$ tar -czvf dir.tgz --exclude-ignore=.ignore dir
dir/
dir/subdir/
dir/.ignore

所以dir/subdir/other_file.ext不包括在内dir.tgz

手册页上写道:

  --exclude-ignore=FILE
         Before dumping a directory, see if it contains FILE.  If so, read exclusion
         patterns from this file. The patterns affect only the directory itself.

以及具体的替代方案

  --exclude-ignore-recursive=FILE
         Same as --exclude-ignore, except that patterns from FILE affect both the 
         directory and all its subdirectories.

但排除模式无论如何dir/.ignore都适用吗dir/subdir

显而易见的是:不,也没有意外.ignore的。dir/subdir/

答案1

可能是个错误,已经遇到

我发现该--exclude-ignore选项并--exclude-vcs-ignores.cvsignore递归方式执行,这与手册相矛盾。

显然尚未修复。

现在还报道在他们的错误跟踪器中

相关内容