Ответ 1
Нет необходимости в циклах или чем-то больше, чем find
и gzip
:
find . -type f ! -name '*.gz' -exec gzip "{}" \;
Это находит все обычные файлы в и ниже текущего каталога, чьи имена не заканчиваются расширением .gz
(то есть все файлы, которые еще не сжаты). Он вызывает gzip
для каждого файла по отдельности.
Изменить, на основе комментария от user unknown
:
В фигурные скобки ({}
) заменяются именем файла, которое передается непосредственно в виде одного слова команде -exec
, как вы можете видеть здесь:
$ touch foo
$ touch "bar baz"
$ touch xyzzy
$ find . -exec echo {} \;
./foo
./bar baz
./xyzzy