Извлеките и удалите все .gz в каталоге - Linux

У меня есть каталог. Он имеет около 500K.gz файлов.

Как я могу извлечь все .gz в этом каталоге и удалить файлы .gz?

Ответ 1

Это должно сделать это:

gunzip *.gz

Ответ 2

@techedemic является правильным, но отсутствует. чтобы указать текущий каталог, и эта команда проходит через все подкаталоги.

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

Ответ 3

Здесь существует более чем один способ сделать это.

    # This will find files recursively (you can limit it by using some 'find' parameters. 
    # see the man pages
    # Final backslash required for exec example to work
    find . -name '*.gz' -exec gunzip '{}' \;

    # This will do it only in the current directory
    for a in *.gz; do gunzip $a; done

Я уверен, что есть и другие способы, но это, наверное, самый простой.

И чтобы удалить его, просто выполните rm -rf *.gz в соответствующем каталоге

Ответ 4

Если вы хотите извлечь один файл, используйте:

gunzip file.gz

Он извлечет файл и удалит файл .gz.

Ответ 5

Извлеките все gz файлы в текущий каталог и его подкаталоги:

 find . -name "*.gz" | xargs gunzip 

Ответ 6

for foo in *.gz
do
  tar xf "$foo"
  rm "$foo"
done

Ответ 7

Try:

ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 tar xvfz

Затем попробуйте:

ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 rm

Это приведет к распаковке всех файлов .tar.gz в текущем каталоге, а затем удалит все файлы .tar.gz. Если вам нужно объяснение, "|" принимает перед ним команду stdout и использует это как stdin команды после нее. Используйте "man command" без кавычек, чтобы выяснить, что делают эти команды и аргументы. Или вы можете исследовать онлайн.