“tar-xzf” для многих “tar.gz” файлов в каталоге

У меня есть много файлов в каталоге. у каждых из них есть совсем другое имя:

one.tar.gz
juk.tar.gz
cv.tar.gz
erf.tar.gz
vcx.tar.gz
cxcd.tar.gz
vc.tar.gz
jkjk.tar.gz
zxc.tar.gz
asd.tar.gz
ghj.tar.gz
kll.tar.gz
qwe.tar.gz

Извлечение один за другим является очень трудоемким. Таким образом, я хочу извлечь весь тот файлы с помощью одной команды. Я попробовал tar -xzf * но не работы

1
задан 18.01.2011, 14:39

7 ответов

Используя find заклинание:

find . -maxdepth 1 -type f -iname '*.tar.gz' -exec tar xzf '{}' \;
8
ответ дан 12.12.2019, 07:38

Это ожидало не работать как tar -xzf *.tar.gz расширится в Вашем случае до tar -xzf one.tar.gz juk.tar.gz cv.tar.gz ... Что означает gunzip one.tar.gz и извлечение из него файлы называют juk.tar.gz, cv.tar.gz, и т.д. Это ясно не, что Вы хотите.

Необходимо сделать цикл на всех tar.gz файлах для извлечения их.

Например:

for f in *.tar.gz ; do tar -xzf $f ; done
7
ответ дан 12.12.2019, 07:38
for i in *.tar.gz
do tar -xzf $i
done

Будет хорошо работать

1
ответ дан 12.12.2019, 07:38
ls *.tar.gz | xargs -n 1 tar -xzf
1
ответ дан 12.12.2019, 07:38

Один способ использовать a for цикл.

for i *.tar.gz; do tar -xvz $i; done
1
ответ дан 12.12.2019, 07:38

goreSplatter's - то, что я сделал бы, но между тем вот правильная форма для версии цикла:

for tarball in *.tar.gz ; do
    tar xzf "$tarball"
done
  • Важно заключить расширение в кавычки переменной в случае, если некоторые файлы имеют пробелы или другие специальные символы на их имена.
  • Связанные аргументы не требуют и не должны использовать ведущий переключатель (-) символ, для мобильности.
  • Современные смолы даже позволят Вам опускать z так как это автоматически обнаруживает компрессионный тип.
1
ответ дан 12.12.2019, 07:38

Другой решения мог быть:

cat *.tar.gz | tar xvf - -ignore-blocks

Но это - ошибка из синтаксического анализатора tar (согласно 1), Таким образом, лучше использовать:

cat *.tar.gz | tar xvf - --ignore-zeros --listed-incremental=noreblocks

Или непосредственно (тот я использую):

cat *.tar.gz | tar tvf - --ignore-zeros

Exemple: [a-c] .tar файлы являются тем же.

me@herpes:/tmp/test$ ls -1
aa.tar
a.tar
bb.tar
b.tar
cc.tar
c.tar
me@herpes:/tmp/test$ cat * | tar tf - --ignore-zeros
a1
a2
stopbroker
startbroker
b1
b2
stopbroker
startbroker
c1
c2
stopbroker
startbroker
me@herpes:/tmp/test$ for i in *; do tar tf $i;done
a1
a2
stopbroker
startbroker
b1
b2
stopbroker
startbroker
c1
c2
stopbroker
startbroker
1
ответ дан 12.12.2019, 07:38

Теги

Похожие вопросы