Как распаковать набор файлов в каталоге?

В каталоге около 10 000 файлов, некоторые из которых являются .fits, а некоторые из них – .tar. Теперь мне нужно распаковать только файлы .tar. Хотя выполнение условия if представляется разумным, команда untar «xvf» работает только для каждого файла, что наносит ущерб использованию цикла.

  • «Невозможно выделить память» при чтении с ленты SCSI
  • не удалось выполнить резервное копирование данных с планшета Android на ноутбук с использованием tar!
  • grep для строки в нескольких файлах под tar и print wc -l
  • Как извлечь все файлы .htaccess из tarball?
  • Список архивов Tar в сценарии bash
  • Solaris tar: «Не удалось создать символическую ссылку: не каталог»
  • Извлечение файлов в текущий каталог
  • Извлечение содержимого архива tar в родительский каталог, что приводит к созданию подкаталогов
  • 2 Solutions collect form web for “Как распаковать набор файлов в каталоге?”

    команда untar «xvf» работает только для каждого файла

    что делает использование цикла необходимым :

    for file in ./*.tar; do tar xvf "$file"; done 

    Фактически с помощью find вы можете выполнять работу без циклов. Как это:

     find -iname '*.tar' -maxdepth 1 -exec tar xvf '{}' \; 

    Логика такова:

    • -iname сопоставляет файлы с расширением .tar (без -iname регистра) и
    • -maxdepth 1 ограничивает диапазон соответствия до глубины 1 (так что ./*/*.tar и тому подобное не будут согласованы)
    • finally -exec выполняет команду tar xvf в согласованных файлах (обратите внимание, что и {} требуется экранирование, обратитесь к find(1) за дополнительной информацией)
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.