我想找到*.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
问题是只会! -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