%EC%9D%80%20find%20%EB%AA%85%EB%A0%B9%EC%9C%BC%EB%A1%9C%20%EB%B0%98%ED%99%98%EB%90%9C%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EC%A0%81%EC%9A%A9%EB%90%A9%EB%8B%88%EB%8B%A4..png)
다음과 같은 특정 확장자의 파일을 표시하기 위해 find 명령을 수행하고 있습니다.
find $directory -type f -name "*.vm"
그러나 나는 파일 권한도 볼 수 있기를 원합니다(예: ls -l 쇼).
어떻게 할 수 있나요?
답변1
GNU에는 사용할 수 있는 지시문이 find
있습니다 . -ls
의 출력 형식과 매우 유사하지만 정확히 일치하지는 않습니다 ls -l
.
아무것도 지정되지 않은 경우 find의 기본 동작은 -print
찾은 파일 이름과 경로를 단순히 인쇄하는 것입니다. 추가하거나 대체하면 -print
더 -ls
자세한 목록이 표시됩니다.
어떤 이유로든 특정 형식을 원한다면 -printf
이것이 바로 당신이 원하는 것입니다. 예를 들어 다음을 시도해 보세요.
find . -printf "%M %n %8.8u %8.8g %8.8s %Ax %AX %p\n"
출력 형식 을 대략적으로 복제합니다 ls -l
. (다른 날짜 형식을 사용합니다. ls의 동작을 복제하는 것도 가능할 수 있습니다. find
사용 가능한 형식 지정자에 대한 자세한 내용과 printf(3)
숫자의 기능에 대한 자세한 내용은 매뉴얼 페이지를 참조하세요.)
일반적으로 당신이 원하는피하다가능하다면 를 사용하고 -exec
, -exec를 사용해야 한다면,원하다단일 호출에서 여러 파일 이름을 지정하는 +
대신 사용하려고 합니다 . {}
그렇지 않으면 명령은 기준과 일치하는 파일당 한 번씩 실행되며, 파일 수가 많으면 상당한 성능 저하가 발생할 수 있습니다.
또한 재귀 동작이 필요하지 않은 경우 가장 간단한 해결책은 먼저 ls를 사용하는 것입니다.ls -ld $directory/*.vm
답변2
-ls
에 옵션을 지정할 수 있습니다 find
. 또는 특정 형식이 필요한 경우 다음을 사용하십시오 -exec
.
find "$directory" -type f -name '*.vm' -exec ls -l {} \;