gunzip папка со многими файлами

Я не понимаю то, что Ваша функция, как предполагается, делает. Как это лучше, чем простое выполнение

for host in host1 host2 host3; do ping -c 1 host >/dev/null && do_stuff; done

Если все, что Вы хотите знать, - то, если хост произошел или не и выполняет команду, если это, вышеупомянутое должно быть достаточным.

5
08.11.2016, 14:18
6 ответов
[

]Попробуйте:[

] [
find . -type f -exec gunzip {} +
] [

]Это предполагает, что текущий каталог содержит только файлы, которые вы хотите распаковать.[

].
10
27.01.2020, 20:31
[

] Предел находится в ядре и равен суммарному размеру аргументов и окружения, переданных системному вызову []execve()[], используемому для выполнения команды. Можно разделить ее на несколько вызовов.[

] [

]To []gunzip[] all the []. gz[] файлов в текущем каталоге:[

] [

]с []zsh[]:[

] [
autoload zargs # best in ~/.zshrc
zargs ./*.gz -- gunzip
] [

]С помощью []ksh93[]:[

] [
command -x gunzip ./*.gz
] [

]GNUly:[

] [
printf '%s\0' *.gz | xargs -r0 gunzip
] [

]POSIXly (и с помощью []gunzip[]):[

] [
find . ! -name . -prune -name '*.gz' -exec gunzip {} +
] [

](остерегайтесь, что вы также распакуете спрятанное []. gz[] файлы)[

] [

]Или вы можете увеличить этот лимит на некоторых системах. На последних версиях Linux:[

] [
ulimit -s unlimited
gunzip ./*.gz
]
7
27.01.2020, 20:31
[

]Немного эффективным решением было бы,[

] [

][]найти $PWD -тип f -имя "*.gz" -print0 | xargs -0 gunzip[][

] [

]Но если в вашей находке нет опции -print0 и в именовании файлов/директории нет места, то можно пропустить аргументы -print0 и -0.[

].
1
27.01.2020, 20:31
[

]Менее эффективный ( но очень гибкий ) процесс - это создание пакетного файла:[

] [
ls | grep .gz | sed -e 's/^/gunzip /' | less
] [

]показывает, что произойдет, чтобы простая опечатка не уничтожила вашу систему[

] [
ls | grep .gz | sed -e 's/^/gunzip /' | bash
] [

]делает это прямо сейчас[

] [
ls | grep .gz | sed -e 's/^/gunzip /' > unpack
at 02:00
bash unpack
<ctrl-d>
] [

]делает это за ночь[

] [

] (обратите внимание, что в этом примере не учитываются пробелы в именах файлов)[

].
1
27.01.2020, 20:31

Самый простой способ, который я нашел:

gunzip -r .
3
27.01.2020, 20:31

Если вы хотите заархивировать файлы в другой каталог, вы можете попробовать:

$ find <path to gzip files> -type f -name "*.gz" -print | \
xargs -I % sh -c 'echo "gunzip -c % > `basename %.gz`"; \
gunzip -c % > `basename %.gz`'

В приведенном выше примере файлы архивируются в каталог, в котором выполняется команда.

1
07.10.2020, 16:38

Теги

Похожие вопросы