Команда FIND, чтобы найти файлы и исключить один подкаталог

Я хочу найти *.mxf и *.MOV файлы с Одним Каталогом, которые являются более старыми, чем 14 daysно я хочу исключить один подкаталог, названный как Secure в рамках этого поиска. вот моя команда, которая я использую его, но я также вижу файлы от Secure каталог, который, как предполагается, не является здесь.

find /main/videos/internal/files/ ! -path "/main/videos/internal/file/Secure/*" \ 
      -type f -name '*.mxf' -o -name '*.MOV' -mtime +14

парни помогают мне узнать свою ошибку.

1
задан 26 August 2015 в 04:18

1 ответ

Проблема состоит в том, что ! -path "/main/videos/internal/file/Secure/*" избежит подкаталогов под /main/videos/internal/file/Secure/ только, не любой другой Secure каталог в иерархии, включенной здесь. Например, /main/videos/internal/file/foobar/Secure/spam.MOV все еще обнаружится в выводе.

Поэтому, если Вы хотите исключить весь Secure каталоги (и подкаталоги), можно использовать -prune действие find здесь:

find /main/videos/internal/files/ -type d -name 'Secure' -prune -o \ 
      -type f \( -name '*.mxf' -o -name '*.MOV' \) -mtime +14 -print

Для соответствия файлам можно использовать -regex:

find /main/videos/internal/files/ -type d -name 'Secure' -prune -o \ 
      -type f -regex '.*\.\(mxf\|MOV\) -mtime +14 -print
1
ответ дан 7 December 2019 в 16:10

Другие вопросы по тегам:

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