Подтвердить что ты не робот

Как разблокировать все .tar.gz с помощью shell- script?

Я пробовал это:

DIR=/path/tar/*.gz

if [ "$(ls -A $DIR 2> /dev/null)" == "" ]; then
  echo "not gz"
else
  tar -zxvf /path/tar/*.gz -C /path/tar
fi

Если папка имеет один tar, она работает. Если в папке много tar, я получаю сообщение об ошибке.

Как я могу это сделать?

У меня есть идея запустить цикл для распаковки, но я не знаю, как решить эту проблему.

4b9b3361

Ответ 1

for f in *.tar.gz
do
  tar zxvf "$f" -C /path/tar
done

Ответ 2

Я нахожу синтаксис find exec очень полезным:

find . -name '*.tar.gz' -exec tar -xzvf {} \;

{} заменяется на каждый найденный файл и выполняется строка.

Ответ 3

for a in /path/tar/*.gz
do
    tar -xzvf "$a" -C /path/tar
done

Примечания

  • Это предполагает, что файлы, заканчивающиеся на .gz, являются gzipped tar файлами. Обычно .tgz или .tar.gz используется для обозначения этого, однако tar не удастся, если что-то не так.
  • Сначала вам может быть проще cd /path/tar, затем вы можете сбросить -C /path/tar из команды untar и /path/tar/ в цикле.