FIND comando para localizar arquivos e excluir um subdiretório

1

Eu quero encontrar os arquivos *.mxf e *.MOV com um diretório que são mais antigos que 14 days , mas eu quero excluir um subdiretório chamado Secure nessa pesquisa. aqui está o meu comando, que eu estou usando, mas também estou vendo os arquivos do diretório Secure que não deveria estar aqui.

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

por favor, rapazes me ajudem a descobrir meu erro.

    
por kunal 26.08.2015 / 02:16

1 resposta

1

O problema é que ! -path "/main/videos/internal/file/Secure/*" evitará subdiretórios em /main/videos/internal/file/Secure/ apenas, e nenhum outro diretório Secure na hierarquia envolvida aqui. Por exemplo, /main/videos/internal/file/foobar/Secure/spam.MOV ainda será exibido na saída.

Portanto, se você quiser excluir todos os diretórios, os subdiretórios Secure , você pode usar a ação -prune de find aqui:

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

Para corresponder aos arquivos, você pode usar -regex :

find /main/videos/internal/files/ -type d -name 'Secure' -prune -o \ 
      -type f -regex '.*\.\(mxf\|MOV\)$' -mtime +14 -print
    
por heemayl 26.08.2015 / 02:39