linux: 파일 권한을 표시하는 방법(ls -l과 같은)은 find 명령으로 반환된 파일에 적용됩니다.

linux: 파일 권한을 표시하는 방법(ls -l과 같은)은 find 명령으로 반환된 파일에 적용됩니다.

다음과 같은 특정 확장자의 파일을 표시하기 위해 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 {} \;

관련 정보