Найти, заархивировать и удалить в одну строку с условием

Для полноты картины, если у вас есть edпод рукой:

echo "$
a
<VirtualHost *:80>
...
</VirtualHost>
.
w" | sudo ed protectedFile
  1. $перейти к последней строке
  2. aдобавление, за которым следуют данные, которые вы хотите добавить, заканчивающиеся строкой, содержащей одну точку
  3. wозначает запись (файл)

Первые две команды могут быть объединены (в результат $a), но это не будет работать с пустым файлом — будет работать по отдельности,поскольку это означает «перейти к последней строке» (, что не является -операцией ), за которой следует «добавить» , а не «добавить к последней строке» , которого на самом деле не существует.

0
28.10.2020, 17:30
1 ответ

Для одного -вкладыша это будет работать:

find $ORIGIN -type f -mtime -1 -exec zip -u ${DEST}/backup_${YESTERDAY}.zip '{}' \; -delete

Вы получите сообщение об ошибке zipв первом файле, так как -uобычно обновляет существующие архивы (, но создает их, если они отсутствуют, и возвращает предупреждение ).

Имейте в виду, что для -mtime -1важна не дата, а последние 24 часа! Таким образом, если вы запустите его в 23 :59 часов, вы удалите сегодняшние файлы! Если вы хотите найти строку даты, используйте следующую опцию:

Скажем, наша строка определена какYESTERDAY=20201028

find $ORIGIN -type f -name \*${YESTERDAY}\*

Обратите внимание на отсутствие жестких кавычек и необходимость экранирования звездочек.

0
18.03.2021, 22:54

Теги

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