ls -R이 특정 패턴에 대해 파일을 반복적으로 나열하지 않는 이유는 무엇입니까?

ls -R이 특정 패턴에 대해 파일을 반복적으로 나열하지 않는 이유는 무엇입니까?

ls -R내 질문은 ls *.pdf예 를 들어 PDF 파일을 재귀 적으로 찾기 위해 이 두 기능을 하나로 결합하는 것이 어떻습니까 ? 물론 다른 것들도 있습니다. 궁금해. 감사해요.pdflsls -R \*.pdffind

답변1

셸은 이를 현재 작업 디렉터리의 모든 .pdf 파일로 확장하고 *.pdf이 작업을 수행하기 위해 하위 디렉터리의 모든 .pdf 파일을 보는 데 사용할 명령과 아무 관련이 없으므로 다음을 활성화해야 합니다. shell (in ) 옵션을 사용하여 다음과 같이 현재 작업 디렉토리뿐만 아니라 모든 하위 디렉토리에서 찾거나 확장할 수 있습니다.ls*.pdfbashglobstar***.pdf

shopt -s globstar; ls -d -- **/*.pdf

또한 를 사용하면 ls -R \*.pdf리터럴과 일치하는 단일 파일을 찾고 있으며 *.pdf여기서는 파일이 실제로 디렉터리 -R가 아닌 한 하위 디렉터리를 찾는 효과가 없으며 *.pdf하위 디렉터리를 재귀적으로 나열하는 데만 사용됩니다. 이 조합을 사용하여 .pdf 파일을 필터링할 수 ls있습니다 grep.

ls -bR |grep '\.pdf$'

그러나 이는 파일만 보고하고 동일한 종료 패턴을 가진 디렉터리도 보고한다는 것을 보장하지 않습니다.

글쎄, 당신이 말하고 알고 있듯이 가장 좋은 방법은 find명령을 사용하는 것입니다.

find . -type f -name '*.pdf'

관련 정보