У меня была такая же проблема в рамках развертывания ИЦ в AWS S3.
Это то, что я сделал для рекурсивного gzipping каталога (на месте) без суффикса .gz
:
find . -type f -exec gzip "{}" \; -exec mv "{}.gz" "{}" \;
Кажется достаточно чистым для меня. Но да, похоже, что вам нужен mv
где-то там.
Если вы используете grunt
, вы можете посмотреть на grunt-contrib-compress
. Некоторые из инструментов grunt
, специально предназначенные для установки в S3, будут работать и с gzip.
Зачем использовать grep, find может сделать работу:
find /home/USER/logfilesError/ -maxdepth 1 -type f -name "xy_*" -daystart -mtime -1
По звукам этого файла вы ищете -name
:
find /path -maxdepth 1 -type f -name 'xy_*' -daystart -mtime -1 -exec grep -H ERROR {} +
Из man find
:
-name pattern
Base of file name (путь с удаленными ведущими директориями) совпадает с шаблоном оболочки. Мета-символы ('*', '?' и '[]') совпадают с '.' в начале базового имени (это изменение в финдутиле-4.2.2; см. раздел КОНФОРМАНЦИЯ СТАНДАРТНЫХ ИНФОРМАЦИЙ ниже). Чтобы игнорировать директорию и файлы под ней, используйте -prune; см. пример в описании -path. Брекеты не распознаются как специальные, несмотря на то, что некоторые оболочки, включая Bash imbue, имеют особое значение в шаблонах оболочек. Сопоставление имен файлов осуществляется с помощью функции библиотеки fnmatch(3). Не забудьте заключить шаблон в кавычки, чтобы защитить его от расширения оболочкой.