Con bsdtar "--exclude", ¿cómo excluir sólo subdirectorios?

Con bsdtar "--exclude", ¿cómo excluir sólo subdirectorios?

En GNU tar (es decir gtar), la --excludeopción con un globo solo coincide con los subdirectorios, pero no con el directorio en sí. Por ejemplo, --exclude test-tar/a/b/*excluiría cualquier cosa dentro de b, pero no ba sí mismo. Sin embargo, bsdtartambién excluye el directorio en sí. Mi pregunta es ¿cómo hago para que bsdtaractúe igual que GNU en este sentido?

Aquí hay un script de ejemplo que demuestra el problema:

#!/usr/bin/env bash

echo -e "\nGiven an archive that looks like this:"
bsdtar -tf test.tgz

echo -e "\nExtract the archive excluding test-tar/a/b/* using gtar"
rm -rf test-tar
gtar -xzf test.tgz --exclude 'test-tar/a/b/*'
file test-tar/a/b
file test-tar/a/b/B.txt

echo -e "\nExtract the archive excluding test-tar/a/b/* using bsdtar"
rm -rf test-tar
bsdtar -xzf test.tgz --exclude 'test-tar/a/b/*'
file test-tar/a/b
file test-tar/a/b/B.txt

Esto produce:

Given an archive that looks like this:
test-tar/
test-tar/a/
test-tar/a/A.txt
test-tar/a/b/
test-tar/a/b/B.txt

Extract the archive excluding test-tar/a/b/* using gtar
test-tar/a/b: directory
test-tar/a/b/B.txt: cannot open `test-tar/a/b/B.txt' (No such file or directory)

Extract the archive excluding test-tar/a/b/* using bsdtar
test-tar/a/b: cannot open `test-tar/a/b' (No such file or directory)
test-tar/a/b/B.txt: cannot open `test-tar/a/b/B.txt' (No such file or directory)

Mis versiones son tar (GNU tar) 1.29y bsdtar 3.3.2.

Respuesta1

Si alguien está buscando una respuesta a esta pregunta, es bastante simple: agregue una barra invertida a la barra diagonal final.

Un comando se vería así:

bsdtar -xzf test.tgz --exclude 'test-tar/a/b\/*'

información relacionada