폴더에 특정 확장자를 가진 특정 파일이 있는지 확인

폴더에 특정 확장자를 가진 특정 파일이 있는지 확인

파일 구조가 있다고 가정해 보겠습니다.

$ cd /home/Desktop
$ ls -d */
Abc/ Qwe/ Zxc/ Rty/
$

이제 각 디렉토리를 반복하여 ".pdf" 파일이 있는지 확인하고 싶습니다. 누군가 가장 좋은 접근 방식이 무엇인지 말해 줄 수 있습니까?

답변1

for dir in Abc/ Qwe/ Zxc/ Rty/; do
  result="$(find "$dir" -maxdepth 1 -type f -name '*.pdf' -printf .)"
  echo "Folder '${dir}' contains ${#result} *.pdf files."
done

이는 하위 디렉터리를 무시합니다.

답변2

사용 find /home/Desktop -type f -name '*.pdf'.

답변3

사용하는 것이 find의심할 여지 없이 가장 빠른 방법입니다. 찾고 있는 디렉토리를 제한하려면 다음을 사용할 수 있습니다.

find <dir1> <dir2> ... -type f -name '*.pdf'

파일 수를 계산하려면 다음을 수행하십시오.

find <dir1> <dir2> ... -type f -name '*.pdf' | wc -l

답변4

정보를 사용하여 수행하려는 작업에 따라 이를 수행하는 몇 가지 방법이 있습니다.

  • 파일을 직접 포함하는 디렉터리 목록을 원한다면 .pdf(즉, 하위 디렉터리가 아닌 최상위 수준에서만) 다음을 수행합니다.

    dirname */*.pdf | sort | uniq
    
  • 모든 수준의 파일이 포함된 디렉토리 목록을 원하면 .pdf(해당 디렉토리의 하위 디렉토리에 있을 수 있도록) 다음을 시도하십시오.

    find . -name '*.pdf' | cut -d/ -f2 | sort | uniq
    

    또는 특정 하위 디렉토리만 검색하려는 경우,

    find Abc Qwe Zxc Rty -name '*.pdf' | cut -d/ -f1 | sort | uniq
    
  • .pdf하위 디렉토리의 모든 파일 목록을 원하면 다음을 수행하십시오.

    find . -name '*.pdf'
    
  • 각 디렉터리의 파일 수를 계산하려면 .pdf사용할 최상위 파일만 계산하세요.

    dirname */*.pdf | sort | uniq -c
    

    또는 하위 디렉터리에 파일을 포함합니다.

    find . -name '*.pdf' | cut -d/ -f2 | sort | uniq -c
    

    -c( 에 옵션을 추가하는 것만으로도 차이점을 확인할 수 있습니다 uniq.)

관련 정보