Удалить скрипт по измененной дате и имени файла

Это потому, что этим файлом управляет конкретное установленное приложение. Вы можете либо удалить это приложение, либо установить нужные параметры непосредственно через это приложение.

В моем случае (Минимальный сервер Linux centos7 )с такой же ситуацией, когда я получал # Generated by NetworkManagerв верхней части файла resolv.conf, поэтому лучший способ изменить эту опцию — использовать команду

nmtui

. Вы можете редактировать серверы имен в этом инструменте, и когда вы меняете параметры networkmanager из этой утилиты, они будут автоматически применены к /etc/resolv.confпосле перезагрузки. Здесь вы можете найти дополнительную информацию .

1
30.10.2020, 12:22
1 ответ

Для фильтрации по имени используйте предикат -name, который принимает шаблон подстановочных знаков, аналогичный используемому при подстановке оболочки:

find. -name '*_LOGS.txt' -type f -mtime +6 -exec rm -f {} +

Лучше поставить этот фильтр первым, так как он, как правило, дешевле, чем те, которые основаны на метаданных файла (, хотя некоторые findреализации выполняют такое переупорядочение автоматически ). Таким образом, если файл исключен из-за того, что его имя не заканчивается на _LOGS.txt, findне нужно извлекать его метаданные.

Как и в глобах оболочки, *соответствует любой последовательности символов. Обратите внимание, что в отличие от глобусов оболочки, нет специальной обработки файлов, имя которых начинается с.(скрытых файлов ), поэтому они также будут включены. То же самое для файлов в каталогах, имя которых начинается с ..

Также обратите внимание, что rmможет принимать более одного имени файла в качестве аргумента, поэтому вы можете использовать +вместо ;в качестве разделителя -exec. Это также имеет то преимущество, что findсообщает об ошибках с помощью rmв своем коде выхода.

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

При использовании zshвы также можете просто выполнить:

rm -f -- **/*_LOGS.txt(D.m+6)

Где .является эквивалентом -type f, m+6для -mtime +6и Dтакже считает скрытые файлы и файлы в скрытых каталогах, как это делает find.

В отличие от некоторых findреализаций, он по-прежнему сможет удалять файлы, имена которых содержат последовательность байтов, не образующих допустимых символов в локали. Однако он может не выполниться rm, если существует очень большой список файлов для удаления (, но см. функцию zargsили модуль zsh/files, чтобы сделать встроенный rmдля обхода этого ).

2
18.03.2021, 22:53

Теги

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