gzip все файлы с определенными расширениями

Возможно, вам нужно переустановить kdm или lightdm, чтобы снова вернуться к настройке конфигурации. И я надеюсь, что это поможет u.

Open terminal: sudo dpkg-reconfigure lightdm,

select u want bro, lightdm, kdm или gdm

[!d3 ]

enter image description here

Если вы хотите использовать экран загрузки ubuntu, просто переместите пакет plymouth-theme-kubuntu-logo и plymouth-theme-kubuntu-text, а затем переустановите plymouth-theme-ubuntu -logo plymouth-theme-ubuntu-text.

1
задан 11 July 2014 в 20:16

5 ответов

Я хотел бы использовать

find /path/to/dir \( -name '*.css' -o -name '*.html' \) -exec gzip --verbose --keep {} \;

Измените name на iname, если вы хотите совпадать с расширениями без учета регистра (т. е. включить расширения .CSS и / или .HTML). Вы можете опустить /path/to/dir, если хотите начать рекурсивный поиск из текущего каталога.

11
ответ дан 24 May 2018 в 05:45
  • 1
    Для тех, кто может задаться вопросом о переключателе --keep, да, это приводит к сохранению исходных файлов. Опустите его, если вы хотите, чтобы их удаляли раз gzipped. – Ben Johnson 8 February 2017 в 03:00

Получить список файлов:

find -type f | grep -P '\.js|\.html|\.css'

И gzip все эти файлы:

find -type f | grep -P '\.js|\.html|\.css' | tar cvzf archive.gz -T -
4
ответ дан 24 May 2018 в 05:45
  • 1
    Разве этот tar список файлов не выводится как файл find, а не файлы? – Jos 11 July 2014 в 17:15
  • 2
    Я отредактировал свой вопрос, чтобы уточнить, что я хочу иметь файл архива для каждого файла css, html или js. – Sadik 11 July 2014 в 17:16
  • 3
    @Jos no с параметром -T tar обрабатывает входные данные как имена файлов. – chaos 11 July 2014 в 17:25
  • 4
    @chaos Ах, спасибо. Сегодня я чему-то научился. – Jos 11 July 2014 в 17:31

Я использовал ответ steeldriver, но мне нравится заполнить его с параметрами --best и --force.

cd в любую папку и введите этот код.

find . \( -name '*.css' -o -name '*.js' \) -exec gzip --verbose --keep --best --force {} \;
Используйте --best для лучшей степени сжатия. Используйте --force для перезаписи, не спрашивая, есть ли файл gzipped.
2
ответ дан 24 May 2018 в 05:45

Вы можете использовать globstar.

с [F9] и параметр оболочка включена, то все что вам нужно, это [ф10].

оболочка bash имеет опцию на [F11], что позволяет создавать рекурсивные шарики с [ф12]. [от f13] включает его. Но Вы не могли бы хотеть делать это для других команд можно запустить позже, так что вы можете запустить его и вашей команде [ф14] в случае, когда вместо.

эта команда [ф15]все [ф16] и [f17 в] файлы в текущем каталоге любой из его подкаталогов, либо из с [F9] и оболочки параметр включен, все что вам нужно, это [ф10]. подкаталоги, и т. д., сохраняя оригинальные файлы ([ф18]) и говорю вам, что он делает ([зг19]):

[Ф1]

если вы хотите, чтобы соответствовать имена без учета регистра, так что эти расширения с прописных букв, не включен, тогда вы можете также включить [20 фунтов] оболочки параметр:

[Ф2]

[клавиши f21] разделяет две команды, и внешний ф22] [ф23], что они будут работать в подоболочку. Параметр оболочки в оболочку не заставит ее быть установлен в вызове оболочки. Если вы хотите, чтобы включить [ф24] затем вы можете запустить [f25 привод датчика]; затем вы можете просто выполнить команду:

[Ф3]

Вы можете отключить [ф26] с shopt -u globstar. Вы можете проверить, если она в настоящее время включена [ф28].

как это работает

ключ к тому, как этот gzip команда работает, что оболочка выполняет разложения на то, чтобы составить список всех файлов в иерархии каталогов с соответствующим именем, затем проходит каждый из этих файлов в качестве аргументов [f30 с].

Расчалка расширение получается [ф31] в [f32 из]. Тогда подстановка расширяет эти две модели в имена файлов можно в текущем каталоге (**, благодаря globstar), чьи имена состоят из ничего ([ф35]) следуют указанным суффиксом ([f36 В] или [фунции f37] в данном случае).

это не соответствует файлы, чьи имена [ф11] или те, которые находятся в каталогах назван именно так. Вы, наверное, не имеют таких HTML и CSS файлы и, если вы это сделаете, вы, вероятно, не хотите включать их. Но если вы хотите включить их, тогда вы можете сопоставить их явно в зависимости от ваших потребностей. Например, изменение [ф39] для [ф40] содержит файлы, которые начинаются с [ф41] пока еще делать поиск в папках, что делать.

если вы хотите и файлы, имена которых начинаются с . и файлы в каталоги, имена которых начинаются с . должно быть включено, там чище и более простой способ: включить [пулемет f44] оболочки параметр.

[Ф4]

, или если вы хотите нечувствительное к регистру соответствие и совпадение имен, которые начинаются с [f45 с]:

[ф5]

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

если у вас и количество файлов по имени, то это может произойти сбой с сообщением об ошибке, объясняющее, что снаряд не может строить командную строку, потому что это будет слишком долго. (Даже с тысячами файлов, это обычно не проблема.)

gzip не на всех, так что Вы не получите половину выполненной работы.

если эта ошибка происходит, или если вы беспокоитесь об этом, вы можете использовать find с -exec, либо как steeldriver описывает (с [ф50) или как я опишу ниже (с {} +).

Вы можете использовать find с -exec действие и + для повышения эффективности.

команда [f55, которая] поддерживает имена нескольких файлов, которые будут сжаты. Но этот [f56 команда], хотя он хорошо работает и не медленно, если у вас есть обычно файлы, запускает команду gzip один раз для каждого файла:

[ф6]

это работает, и вы можете определенно использовать его. (. поиск в текущем каталоге. Кроме того, это действительно немного другой способ написания команды в steeldriver описывает; вы можете использовать какой стиль вы предпочитаете.)

[dрайвер d41]Вы также можете find передать несколько файлов, чтобы [от f60] и запустить его столько раз, сколько потребуется-это почти всегда только один раз. Для этого используйте [ф61] вместо \;. В + аргумент должен прийти только после [64-го фокуса]. [камера f65] заменяет + дополнительные имена, если таковые имеются.[!dрайвер d41] [ф7] [d43 см.]это прекрасно, чтобы использовать + даже если есть только несколько подходящих файлов, и когда их много, это может быть заметно быстрее, чем отдельные [f68 не] вызова для каждого файла.[!d43 см.]

как steeldriver упоминает, вы можете использовать -iname вместо [р70], чтобы соответствовать файлы, имя которых конец как .css или .html но с другой капитализации. Это соответствует включение nocaseglob в globstar на основе метода, описанного выше.

в конце концов, вы, вероятно, не имеют все соответствующие файлы или каталоги, которые начинаются с [f75 в Джей]. Но если вы делаете, find автоматически включает их. Если вы хотите каждый их (как это происходит с [f77 на английском языке]-основан метод, описанный выше, когда dotglob выключен), steeldriver упоминает:

[ф8]

в globstar на основе описанного выше проще написать, особенно если ты кроме каталогов и файлов, которые начинаются с [ф80], так как это по умолчанию.

чего не надо делать...

имена файлов могут содержать любые символы, за исключением разделителя пути / и нулевой символ. Многие методы, которые срываются на существуют странные имена, и они, как правило, сложнее, чем методы, которые всегда просто работать. Поэтому я предлагаю избежать ним, даже если вы знаете (или думаете, что знаете) они хорошо в вашей конкретной ситуации. И, конечно, Вы не должны использовать их, если вы могли иметь имена с символами, которые могут быть обработаны специально, включая пробелы.

[размером d57]можно смело труба на выходе find в другую команду, которая обрабатывает его использовать [ф61] вместо \;, а не иначе. Имена файлов могут содержать символы новой строки (хотя я отговариваю вас от намеренно называя файлы с ними). В [ф84] команду [ф85] действий, в том числе найти команды без явных действий, поскольку тогда [ф86] является значением по умолчанию--не производит вывод, который можно смело водопроводной или иное не предусмотрено в другую команду, которая выполняет действия над файлами.[!размером d57]

выход find производит с -print0 действий может безопасно передаваться xargs -0 (в [ф90] флаг говорит [f91 со шляпками] ожидать нуль-отдельный вход).

1
ответ дан 24 May 2018 в 05:45

Чтобы заархивировать все файлы в папке / подпапке рекурсивно:

gzip -r `find . -type f -name "*.html"` 

Чтобы распаковать:

gunzip -r `find . -type f -name "*.gz"` 
0
ответ дан 24 May 2018 в 05:45
  • 1
    Этот метод подстановки подстановки часто прерывается и довольно плохо. Проблема в том, что имена файлов, содержащие пробелы или другие пробелы, будут разделены и обработаны как несколько имен файлов. (Эти команды написаны с использованием синтаксиса ` `, но проблема полностью применяется при использовании синтаксиса $( ).) – Eliah Kagan 14 August 2017 в 18:16

Другие вопросы по тегам:

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