FIND 命令查找文件并排除一个子目录

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

问题是只会! -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

相关内容