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

得到的 adir.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

先說一個顯而易見的事實:不,也不是偶然出現.ignoredir/subdir/

答案1

可能是個錯誤,已經遇到過

我發現了這個--exclude-ignore選項並--exclude-vcs-ignores遞歸.cvsignore地執行,這與手冊相矛盾。

顯然還沒有修復。

現在也報道了在他們的錯誤追蹤器中

相關內容