이와 관련하여 내가 뭘 잘못하고 있는지 잘 모르겠습니다. 많은 게시물과 웹사이트를 읽었지만 여전히 문제가 있습니다.
전날 변경된 파일이 있는지 시스템을 확인해야 하는데, 마운트된 특정 폴더는 테라바이트 크기가 큰 드라이브에 마운트되어 있기 때문에 건너뛰어야 합니다.
설정은 다음과 같습니다. /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