* 주요 사용 방법 정리
$ # 현재 디렉토리 내에 있는 디렉토리 개수 알고싶을 때
$ ls -l | grep ^d | wc -l
$ # 현재 디렉토리 내에 있는 파일의 개수 알고싶을 때
$ ls -l | grep ^- | wc -l
$ # 정규식(Regular Expression)을 이용해서 보다 세밀하게 파일명을 필터링하고 싶을 때
$ ls -l | grep ^- | awk '{print $9}' | grep '[정규식]' | wc -l
$ # 설치된 grep 명령어에 따라 정규식을 사용할 때,
$ # grep에 -e 옵션을 주거나 egrep을 사용해야 할 수도 있고
$ # 정규식에 따옴표를 주어야 할 수도 있다
$ ls -l | grep -e ^- | awk '{print $9}' | grep -e '[정규식]' | wc -l
$ ls -l | egrep ^- | awk '{print $9}' | egrep '[정규식]' | wc -l
서브 디렉토리를 포함하려면 ls -Rl를 사용하면 된다
* 해석하기
$ ls -l | grep ^- | wc -l
- ls 명령어는 현재 디렉토리의 파일이나 디렉토리 목록을 보여준다
- ls 명령어에 -l 옵션을 붙여주면 디렉토리의 구체적 내용을 보여준다
- 매 줄의 시작부분을 보고 해당 내용의 종류를 알 수 있다. (d로 시작하면 디렉토리, -로 시작하면 일반파일, l 로 시작하면 simbolic link이다)
$ ls -l | grep ^- | wc -l
$ ls -l | grep -e ^- | wc -l
$ ls -l | egrep ^- | wc -l
- grep은 설치된 grep 명령어의 종류에 따라 정규식을 사용할 때 grep에 -e 옵션을 주거나 egrep을 사용해야 할 수도 있다
- grep의 정규식에서 ^ 는 줄의 가장 첫 부분을 나타내고, $는 줄의 가장 마지막을 나타낸다.
- 따라서, ^-는 줄의 맨 앞이 -로 시작하는 파일, 즉 일반 파일을 세기 위해 사용하는 것이다.
- 디렉토리의 개수를 세고 싶으면 grep ^d 로 바꾸어주면 된다.
- .cpp를 확장자로 가지는 파일을 찾고 싶으면 grep ^-.*\.cpp$로 바꾸어주면 된다.
$ # txt 확장자를 가진 파일 보기
$ ls -Rl | grep '^-.*\.txt$'
$ ls -Rl | grep "^-.*\.txt$'
$ ls -Rl | grep ^-.*\.txt$
# 결과
-rw-r--r-- 1 root root 7155 11월 21 16:50 manual.txt
-rw-r--r-- 1 root root 53 11월 21 16:28 test.txt
- 설치된 grep 명령어의 종류에 다라 정규식에 따옴표를 사용해야 할 수도 있다.
$ ls -Rl | grep '^-.*\.txt$'
-rw-r--r-- 1 root root 7155 11월 21 16:50 manual.txt
-rw-r--r-- 1 root root 53 11월 21 16:28 test.txt
$ ls -Rl | grep '^-.*\.txt$' | wc -l
2
- wc -l 명령어를 해주면 파일 리스트를 출력해 주는 것이 아닌 파일 리스트의 개수를 출력해준다
'Coding > 기타' 카테고리의 다른 글
저장단치 단위 - iB(binary byte), B(byte) (0) | 2020.01.21 |
---|---|
sudo apt install nvidia-cuda-toolkit 설치 오류 (0) | 2020.01.14 |
코드 작성 방식: snake, pascal, camel, hungarian (0) | 2020.01.13 |
conda, pip list export하기, 파일로 저장하기 (0) | 2020.01.02 |
Stack Overflow란? (1) | 2019.12.26 |