temp
이름 이 . 인 모든 파일을 찾아야 할까요 ?find . -name "temp"
그러면 오류 메시지가 나타나지 않는지 확인해야 합니까 2>/dev/null
? 이전 명령 끝에 추가할 수 있습니까?
답변1
주문하다
find . -name temp
모두 찾아낼 것이다이름그건 temp
. 여기에는 일반 파일, 디렉터리, 소켓, 심볼릭 링크 등과 같은 다양한 파일이 포함됩니다.
그냥 찾고 싶다면정기적인파일을 생성한 후 다음 -type f
을 사용하여 테스트합니다.
find . -name temp -type f
오류를 숨기려면 다음과 같이 발생할 수 있습니다(액세스할 수 없는 디렉터리에 액세스하려고 시도하여).
find . -name temp -type f 2>/dev/null
즉, 표준 오류 스트림을 (모든 오류 삭제) find
로 리디렉션합니다./dev/null
오류를 피하고 싶다면, 즉숨다오류가 발생한 경우 액세스 권한이 없는 디렉터리에 입력하지 않도록 주의하세요. GNU의 경우 find
편리하게 사용할 수 있습니다.
find . -type d ! \( -readable -executable \) -prune -o -name temp -type f -print
이 테스트는 모든 디렉토리에 대해 적용되며 GNU의 경우 -type d
현재 경로 이름이 현재 사용자가 실행하거나 읽을 수 없는 것을 참조하는 경우 find
부정 테스트가 적용됩니다 . -executable -readable
디렉토리는접근성실행할 수 있고 디렉토리의 내용을 나열할 수 있는 경우(읽을 수 있는 경우) 검색 트리에서 디렉토리를 "정리"합니다 -prune
. 즉, find
입력하지 마십시오.
이는 -o
논리적 OR 연산입니다. 사용하지 않을 경우 -o
기본값 -a
은 "AND"입니다. 지정된 테스트 및 작업은 왼쪽에서 오른쪽으로 평가됩니다.
마지막으로 -print
모든 테스트를 통과한 모든 경로 이름을 인쇄합니다.
당신은 원하십니까?하다찾은 파일에 대해 일부 작업을 수행한 다음 작업을 수행하여 이 작업을 수행합니다 find
. 예를 들어, 이를 제거하려면 -delete
명령 끝에 추가하거나 -print
로 변경합니다 -delete
. 보다 일반적인 작업을 수행하려면 해당 작업을 반복해야 할 수도 있습니다. 당신은 다음을 사용하여 이 작업을 수행합니다.
find . -type d ! \( -readable -executable \) -prune -o -name temp -type f \
-exec sh -c '
for pathname do
# code that uses "$pathname" goes here
done' sh {} +
당신은 또한 볼 수 있습니다