FIND 명령 정리 디렉터리 문제

FIND 명령 정리 디렉터리 문제

이와 관련하여 내가 뭘 잘못하고 있는지 잘 모르겠습니다. 많은 게시물과 웹사이트를 읽었지만 여전히 문제가 있습니다.

전날 변경된 파일이 있는지 시스템을 확인해야 하는데, 마운트된 특정 폴더는 테라바이트 크기가 큰 드라이브에 마운트되어 있기 때문에 건너뛰어야 합니다.

설정은 다음과 같습니다. /usr/local/connect/ 내의 /usr/local/connect/logs 폴더에 여러 드라이브를 마운트했습니다. --> NFS에 마운트했습니다. /usr/local/connect/DR01 --> DR에 마운트했습니다. 또한 그러한 일부를 공유했습니다 ...

나는 이러한 디렉토리(또는 이 목적에 적합한 모든 것)를 제외하고 일반 find 명령을 실행하고 싶습니다. 내가 시도했지만 작동하지 않는 것 같습니다.

찾다. ! -path "/usr/local/connect/" -type f -name "*.txt" -mtime -1

찾다. -type f -path "/usr/local/connect/" -prune -o -name "*.txt" -mtime -1

이들 중 어느 것도 작동하지 않는 것 같습니다. 나는 또한 이 작업을 다른 순서로 시도했습니다(예: -f를 먼저 입력하거나 먼저 다듬기 등). 그러나 나는 가지치기가 정방향 경로를 제거한다는 것을 읽었습니다. 이것은 쉽게 할 수 있는 일인 것 같습니다. 내 실수를 보면 알려주세요! 미리 감사드립니다!

답변1

-path "/usr/local/connect/"정확한 파일 경로에서만 일치합니다 /usr/local/connect/. find .모든 경로는 다음으로 끝나기 때문에 이는 결코 일치하지 않습니다..

그래서 당신은 원할 것입니다 :

find / -path '/usr/local/connect/*' -type d -prune -o \
       -name '*.txt' -type f -mtime -1 -print

이것도 -print중요합니다. 그것이 없으면 -print전체 표현식(따라서 두 부분 -o) 과 일치하는 파일에 대한 암시적 존재가 있을 것입니다 .

이를 사용하여 -xdev파일 시스템 경계가 넘어가는 것을 방지할 수도 있습니다.

find .현재 디렉터리가 일 때 실행 하려면 /usr/local다음과 같아야 합니다.

cd /usr/local &&
  find . -path './connect/*' -type d -prune -o \
         -name '*.txt' -type f -mtime -1 -print

관련 정보