트림을 다음과 같이 사용하려고합니다.
find /opt/app/bss/sieb/fs_clone1/userpref -name "*" -type f -mtime -7 -prune
아직 하위 디렉터리를 검색하는 중입니다.
답변1
하위 디렉터리를 검색 하지 않았기 때문에 여전히 -prun
하위 디렉터리를 검색하고 있습니다.
-prune
트리 의 경우 find
먼저 일치해야 합니다.
find / -type d ! -path / -prune -print
/boot
/home
/mnt
/opt
/esp
/dev
/proc
/root
/run
/srv
/sys
/tmp
/usr
/var
/etc
-path /
그렇지 않으면 발견된 첫 번째 디렉토리가 /
루트 디렉토리가 되고그것-prune
그런 다음 -print
편집이 이루어집니다.
하지만 보시다시피 그렇습니다일치d 파일이 -prune
전부입니다. 그래서 당신이성냥 -type f
트리가 전혀 없습니다 -prune
. 일반 파일에는 하위 디렉터리가 없습니다.
아마도 다음과 같은 것을 원할 것입니다.
find /opt/app/bss/sieb/fs_clone1/userpref \
-path \*path/to/ignore -prune -o \
! -type d -mtime -7
이것은 당신이 말한 것과 매우 다릅니다. 먼저 -path path/to/ignore
작동하지 않습니다. 그것은 일치해야합니다모두경로로 시작하고 시작 트리는 시작 /
하지만 path/to/ignore
전혀 그렇지 않습니다. 그래서 나는 *
globstar를 넣었지만 더 나은 - 아마도 더 간결하게는 다음과 같을 수 있습니다:
cd /opt/app/bss/sieb/fs_clone1/userpref &&
find . -path ./path/to/ignore -prune -o \
! -type d -mtime 7
...이렇게 하면 출력이 덜 복잡해집니다. 그러나 어느 쪽이든 해당 패턴과 일치하는 모든 경로 는 'd -path
됩니다 .-prune
아니요다른 문으로 이동했기 때문에 인쇄되었으며 자동으로 인쇄되는 전체 스크립트의 마지막 표현식 -o
일 뿐입니다 .find
그러나 마지막 부분도 다르다. -name '*'
이름이 모두 일치하므로 필터링 '*'
하지 않는 것이 좋습니다. 나는 이것이 ! -type d
많은 사람들이 말할 때 의미하는 바라고 생각합니다 -type f
. 전자는 fifo, 소켓 및 기타 이상한 파일 형식을 포함하여 디렉터리가 아닌 모든 파일 형식과 일치합니다. 후자는 일반 파일에만 일치합니다. 아마도 당신은 후자를 원할 것입니다. 하지만 저는 단지 그것을 언급하고 싶었을 뿐입니다.
어쨌든, 모든 것이 결정되고 완료되면 *path/to/ignore
다른 모든 것이 일치하고 잘리고 인쇄되지 않습니다. 이 파일은 디렉토리 유형이 아니며 7일 전에 수정되었습니다.
답변2
find /opt/app/bss/sieb/fs_clone1/userpref -type f -mtime -7 -path path/to/ignore -prune -o -print
하지만 내 생각엔 당신에게 필요한 것은 -depth
.
이는 −maxdepth 0
명령줄 인수에만 테스트와 작업을 적용한다는 의미입니다. −mindepth 1
명령줄 매개변수를 제외한 모든 파일이 처리됨을 나타냅니다.