[Shell Script] 디렉터리에 있는 파일과 디렉터리 수 조사 하기
디렉터리에 있는 파일과 디렉터리 수 조사 하기
작업 디렉터리 등 여러 파일이 있는 디렉터리에서 파일 수, 디렉터리 수를 세고 싶을 때 사용합니다 .
#!/bin/sh
targetdir="/home/vscode/myapp"
filecount=$(find "$targetdir" -maxdepth 1 -type f -print | wc -l)
dircount=$(find "$targetdir" -maxdepth 1 -type d -print | wc -l) #1
dircount=$(expr $dircount - 1) #2
echo "대상 디렉터리 : $targetdir"
echo "파일 수 : $filecount"
echo "디렉터리 수 : $dircount"
이 스크립트는 /home/vscode/myapp/ 디렉터리 아래에 있는 파일 수와 디렉터리 수를 표시 합니다 .
#1에서는 -type f와 -type d 로 각각 파일 목록과 디렉터리 목록을 표시하고 그 줄 수를 wc -l명령으로 취득하여 셸 변수filecount에 파일 수를 , discount에 디렉터리 수를 대입합니다 .
#1에서 find 명령어를 실행할 때 -maxdepth라는 옵션을 사용합니다 . 서브 디렉터리를 대상에서 제외 하기 위함입니다 .
find 명령어는 아무것도 지정하지 않으면 서브디렉토리도 포함하여 검색합니다 .
이 예제에서는 디렉터리 /home/vscode/myapp 바로 아래에 있는 파일 수와 디렉터리 수를 카운트 하므로 서브 디렉터리는 포함하지 않습니다 .
따라서 -maxdepth 1로 1단계만 대상으로 합니다 .
find 명령어 마지막에 print가 있습니다 .
이것은 찾은 파일을 그대로 표시 합니다 .
#2는 카운트한 디렉터리 수에서 1을 뺍니다 .
이것은 find 명령어의 -type d 로 디렉터리 목록을 표시하면 다음 처럼 대상 경로가 먼저 표시되므로 실제 서브디렉토리 수보다 하나 더 많이 출력되기 때문입니다 .
find 명령어로 디렉터리 목록 표시
대상 경로에 있는 디렉터리 수를 셀 때는 -type d 출력 결과에서 1을 빼야합니다 .
따라서 #2 expr 명령어를 사용하여 dircount에서 1을 빼고 그 결과를 치환 $()로 얻어 디렉토리 수를 셀 수 있습니다 .
스크립트 결과