У мене є каталог. Він має близько 500 КГц файлів.
Як я можу витягти всі файли .gz у цьому каталозі та видалити файли .gz?
У мене є каталог. Він має близько 500 КГц файлів.
Як я можу витягти всі файли .gz у цьому каталозі та видалити файли .gz?
Відповіді:
Це має зробити це:
gunzip *.gz
find "$dir" -maxdepth 1 -name '*.gz' -print0 | xjobs -0 -l50 -v2 gunzip
обмеження екземплярів до 50 аргументів у кожному (і для їх паралельного запуску).
Існує не один спосіб зробити це очевидно.
# 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
Я впевнений, що є й інші шляхи, але це, мабуть, найпростіший.
А щоб видалити його, просто виконайте a rm -rf *.gz
у відповідному каталозі
for foo in *.gz
do
tar xf "$foo"
rm "$foo"
done
Спробуйте:
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 " без лапок, щоб зрозуміти, що роблять ці команди та аргументи. Або ви можете досліджувати в Інтернеті.
.gz
Файл не обов'язково повинен бути архів. У такому випадку вам не буде чого видаляти під час виступуgzip -d file.gz
.