파일 구조가 있다고 가정해 보겠습니다.
$ 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
.)