Как рекурсивно распаковывать gz-файлы на удаленном хосте с ограниченными командами?

У меня есть куча файлов .jpg.gz в директории, которую мне нужно распаковать.

Я знаю, что команда распаковки:

  • Как ограничить SSH-туннель определенным исходящим IP-адресом на SSH-сервере?
  • Перенос динамического порта ssh и tcpdump показывают открытый текст
  • Как разрешить ssh-соединение отказано в AIX?
  • undefined symbol в /usr/lib64/libGL.so.1 при использовании ssh
  • Как восстановить поврежденную сессию xdebug?
  • Сервер SSH всегда доступен под большой нагрузкой
  • tar -xzvf FileNameHere.jpg.gz

    Но есть ли флаг, который вы можете рекурсивно распаковать файлы в каталоге? У меня более ста сжатых файлов, и я не хочу вручную распаковывать каждый из них.

    Кроме того, поскольку я являюсь SSHing в службе хостинга, у меня есть только следующие команды:

     arch bzip2 cal cksum cmp cp crontab basename cd chmod ls date df du dos2unix unix2dos file getfacl gzip head hostid tail mkdir mv nslookup sdiff tar uptime wget whois unzip 

  • Ответ yes в сценарии bash
  • Извлечь ключ сервера SSH с самого сервера
  • SSH позволяет мне войти в систему с паролем, хотя я установил «PasswordAuthentication no»
  • Соединение ssh отказалось от того же ПК при выходе за пределы локальной сети
  • Как включить унисон для входа в ssh из сервисного модуля systemd?
  • команда linux / unix для проверки внешних / внутренних сетевых соединений
  • 3 Solutions collect form web for “Как рекурсивно распаковывать gz-файлы на удаленном хосте с ограниченными командами?”

    Чтобы извлечь ваши файлы, вам нужно использовать gzip :

     gzip -d *.jpg.gz 

    Вы говорите об этом рекурсивно; учитывая, что у вас нет find , вам придется посещать каждый каталог по очереди и выполнять указанную выше команду.

    Если оболочка хоста, к которому вы подключились, является версией bash> = 4.0, вы можете включить опцию globstar . Когда включено, ** glob будет рекурсивно соответствовать подкаталогам. Итак, следующее должно делать то, что вам нужно:

     shopt -s globstar for gz_file in **/*.jpg.gz; do gzip -d "$gz_file" done 

    Не требуется ручное рекурсирование в требуемые подкаталоги.

    Хотя сценарий оболочки можно записать для рекурсии каталогов (но я не думаю, что у вас есть доступ к удаленному sh), вы можете использовать этот грубый, но эффективный ярлык, предполагая, что ваш удаленный ограниченный ssh ​​расширяет подстановочные знаки:

     gzip -d *.jpg.gz gzip -d */*.jpg.gz gzip -d */*/*.jpg.gz ... 

    … в зависимости от глубины и размера подкаталогов.

    Примечание. Если у вас слишком много файлов, вы можете превысить ограничение длины командной строки

    edit: Это использовалось для включения ответа с использованием ls -R, но это не дает полных путей.

    Linux и Unix - лучшая ОС в мире.