Вы не можете использовать {}
в подстановке команд (, вызывая basename
), так как это выполняется до того, как будет вызвано , даже xargs
. Это означает, что tar
попытается изменить каталог на каталог с именем{}
(буквально )для каждого архива.
Используйте цикл for
, в xargs
нет необходимости. например.
for t in *.tar ; do
bn="$(basename "$t".tar)"
mkdir -p "$bn"
tar -xvf "$t" -C "$bn"
done