Я пытался найти все файлы датированные и все файлы 3 дня и более назад.
find /home/test -name 'test.log.\d{4}-d{2}-d{2}.zip' -mtime 3
Он ничего не перечисляет. Что с ним не так?
Я пытался найти все файлы датированные и все файлы 3 дня и более назад.
find /home/test -name 'test.log.\d{4}-d{2}-d{2}.zip' -mtime 3
Он ничего не перечисляет. Что с ним не так?
find /home/test -regextype posix-extended -regex '^.*test\.log\.[0-9]{4}-[0-9]{2}-[0-9]{2}\.zip' -mtime +3
-name
использует глобулярные выражения,
а также подстановочные знаки. Что вы хотите
-regex
find
использовать Extended
Регулярные выражения через
-regextype posix-extended
флаг\.
+
как
в -mtime +3
.$ find . -regextype posix-extended -regex '^.*test\.log\.[0-9]{4}-[0-9]{2}-[0-9]{2}\.zip'
./test.log.1234-12-12.zip
Использовать -regex not -name и помнить, что регулярное выражение совпадает с тем, что find будет печатать, например. "/home/test/test.log" не "test.log"
Начните с:
find . -name '*.log.*.zip' -a -mtime +1
Вам может не понадобиться регулярное выражение, попробуйте:
find . -name '*.log.*-*-*.zip' -a -mtime +1
Вам понадобится +1, чтобы соответствовать 1, 2, 3...
Используйте -regex
:
На странице man:
-regex pattern
File name matches regular expression pattern. This is a match on the whole path, not a search. For example, to match a file named './fubar3', you can use the
regular expression '.*bar.' or '.*b.*3', but not 'b.*r3'.
Кроме того, я не верю, что find
поддерживает расширения регулярных выражений, такие как \d
. Вам нужно использовать [0-9]
.
find . -regex '.*test\.log\.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\.zip'
Просто небольшая разработка регулярного выражения для поиска в каталоге и файле
Найдите прямую ссылку с именем, как книга
find . -name "*book*" -type d
Найти файл с именем, таким как книжное слово
find . -name "*book*" -type f