UNIX의 새로운 기능입니다. 특정 디렉터리의 모든 파일과 하위 디렉터리를 반복하여 인쇄하는 스크립트를 만들어 보세요. 특정 디렉터리를 동적으로 건너뛸 수 있기를 원합니다.
내 생각은 지정된 디렉터리의 모든 항목을 반복하는 for 루프를 만드는 것입니다 for i in $(find ./ -printf '%f\n')
. 하지만 계속하고 싶지 않은 디렉터리를 발견하면 해당 디렉터리를 건너뛸 수 있는 방법이 있는지 궁금합니다. 에서와 같이
if [ "$i" == something I don't want to go down ]
then
skip this directory
fi
이것이 가능한지 확실하지 않습니다. 정리 기능을 사용하여 디렉토리를 건너뛰는 방법을 찾았지만 이를 위해서는 건너뛰려는 유형을 미리 알아야 합니다. 적어도 그것이 제가 이해하는 바입니다. 감사해요.
답변1
예, -exec
은 과 마찬가지로 조건자 -name
이며 find
명령의 종료 상태를 고려하고 0이 아닌 경우 false로 처리합니다.
하지만 참고하세요ㅏ)이것은 테이블에서만 작동합니다.-exec ... \;
아니요양식에(항상 정확함)-exec .. {} +
비)각 파일이나 디렉터리에 대해 별도의 프로세스를 포크하는 것은느린.
예를 들어 다음과 같은 파일이 포함된 모든 디렉터리를 건너뜁니다 foo.txt
.
find . -type d -exec test -f {}/foo.txt \; -prune -or -print
$ mkdir -p a/{1,2,3}/{x,y,z}; touch a/{1,2,3}/{x,y,z}/a.txt
$ find . -type d -exec test -f {}/foo.txt \; -prune -or -print
... lots of files ...
$ touch a/{1,2}/foo.txt a/3/{x,y}/foo.txt
$ find . -type d -exec test -f {}/foo.txt \; -prune -or -print
.
./a
./a/3
./a/3/z
./a/3/z/a.txt
물론 test -f ...
정적 명령 대신 사용할 수도 있습니다. path/to/some/script {} ...
. GNU find(Linux의 기본값)를 사용 -execdir
하면 -exec
.