[리눅스] 파일 개수 구하기(find, wc 이용)
리눅스 OS를 서버로 사용할 경우, 특정 종류 혹은 모든 파일의 개수를 구해야 할 경우가 있다.
이때 사용되는 명령어를 간단히 정리해본다. 결론적으로 find와 wc 명령어를 사용하게 되는데, 우선 이 두 명령어가 어떤 명령어인지 간단하게 짚고 넘어가본다.
1. find 명령어
콘솔에서 find --help 라고 쳐보면 아래와 같은 내용이 출력된다.
사용법: find [경로...] [수식]
기본 경로는 현재 디렉토리입니다; 기본 수식은 -print입니다
수식은 다음과 같이 이루어질 수 있습니다:
연산자(감소하는 우선순위; 다른 것이 주어지지 않으면 -and가 묵시적으로 사용됨)
( EXPR ) | EXPR -not EXPR EXPR1 -a EXPR2 EXPR1 -and EXPR2
EXPR1 -o EXPR2 EXPR1 -or EXPR2 EXPR1 , EXPR2
옵션 (항상 참): -daystart -depth -follow --help
-maxdepth LEVELS -mindepth LEVELS -mount -noleaf --version -xdev
시험 (N은 +N, -N, N이 될 수 있음): -amin N -answer FILE -atime N -cmin N
-cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME
-ilname PATTERN -iname PATTERN -inum N -ipath PATTERN -iregex PATTERN
-links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE
-nouser -nogroup -path PATTERN -perm [+-]MODE -regex PATTERN
-size N[bckw] -true -type [bcdpfls] -uid N -used N -user NAME
-xtype [bcdpfls]
-context CONTEXT
행동: -exec COMMAND ; -fprint FILE -fprint0 FILE -fprintf FILE FORMAT
-ok COMMAND ; -print -print0 -printf FORMAT -prune -ls
=> 즉 find는 여러가지 조건을 가진 파일 혹은 폴더들의 목록을 검색하는 명령어이다.
2. wc 명령어
콘솔에서 wc --help 라고 쳐보면 아래와 같은 내용이 출력된다.
사용법: wc [<옵션>]... [<파일>]...
Print newline, word, and byte counts for each FILE, and a total line if
more than one FILE is specified. With no FILE, or when FILE is -,
read standard input.
-c, --bytes print the byte counts
-m, --chars print the character counts
-l, --lines print the newline counts
-L, --max-line-length 가장 긴 줄의 길이를 표시합니다
-w, --words 단어의 개수를 인쇄합니다
--help 이 도움말을 표시하고 끝냅니다
--version 버전 정보를 출력하고 끝냅니다
=> 즉 wc는 파일의 줄이나 단어 수 등을 한번에 계산하여 확인할 수 있는 명령어이다.
3. 파일 개수 구하기
위 두 내용을 살펴보았을 때 파일 개수는 아래와 같이 구해야 한다는 것을 알 수 있다.
> find [디렉토리경로] -type f -name "[파일명규칙]" | wc -l
find의 결과로 출력되는 라인수 = 검색된 파일 개수이기 때문에 find로 특정 이름을 가진 파일을 검색하고, 이 결과의 줄 수를 출력하는 것이다.
예를 들어 /home 경로 안에서 확장자가 .log인 파일의 개수를 구하고자 할 때는 아래와 같이 입력하면 된다.
> find /home -type f -name "*.log" | wc -l