Я работаю над скриптом для поиска файлов старше 30 дней в заданной папке. Согласно требованиям, мне нужно удалить только файлы с расширением.бревноили.внеи пропускать подкаталоги.
Следующая команда возвращает все файлы .log*, измененные 30 дней назад. Однако она возвращает все файлы .out, даже самые последние. Что-то не так в приведенном ниже коде?
find -maxdepth 1 -mtime +30 -type f -name "*.log*" -o -name "*.out*"
Не могли бы вы мне сообщить, что не так в приведенном выше утверждении?
решение1
Пытаться:
find -maxdepth 1 -mtime +30 -type f \( -name "*.log*" -o -name "*.out*" \)
Проблема была в том, что find
связывает логическое-и более тесное, чем логическое-или. Скобки противодействуют этому.
Без скобок find
ищет файлы, которые соответствуютили(а)-mtime +30 -type f -name "*.log*"
или(б) -name "*.out*"
.
С круглыми скобками find
ищет файлы, которые (а) соответствуют-mtime +30 -type f
и(б) соответствует либо , -name "*.log*"
либо -name "*.out*"
.