아래와 같이 Korn 스크립트에 명령이 있습니다.
find <path1> <path2> <path3> -name filename
그 후 출력을 txt 파일에 저장합니다. 이 txt 파일을 사용하면 일부 작업이 수행됩니다.
필요한 파일이 path1에서 발견되면 find 명령이 path2 및 path3에서 검색하지 않고 중지되도록 이것을 사용할 수 있는 방법이 있습니까?
-quit 옵션을 사용해 보았지만 -quit
IBM AIX 버전의 find에서는 작동하지 않는 것 같습니다. locate
시스템에 명령이 없습니다. 설치 권한도 없습니다.
파이프 옵션을 사용하면 head -1
작업이 수행되지만 경로 2와 경로 3에 다른 파일이 없고 파일이 경로 1에만 있는 경우에도 여전히 모든 경로를 검색합니다.
답변1
내가 이것을 처리하는 방법은 find
일치하는 항목을 찾을 때까지 각 디렉터리에서 실행하면서 디렉터리를 반복하는 것입니다.
for dir in path1 path2 path3
do
echo "Searching $dir" >&2
match=$(find "$dir" -type f -name "filename" 2>/dev/null)
test -n "$match" && echo "$match" && break
done
echo
자동 솔루션을 원할 경우 이 두 문을 제거할 수 있습니다. 루프를 종료할 때 $match
비어 있지 않은 경우 전체 경로 이름과 $dir
이를 찾을 수 있는 최상위 디렉터리가 포함됩니다.