본문 바로가기

~2023

[Unix] 유닉스 필터 명령어

728x90
반응형

유닉스의 장점으로 작은 명령어들을 수행해 큰 작업을 수행해낸다.

처음에 수행한 명령의 출력이 다음 명령의 입력으로 들어가기 때문에 이렇게 입출력을 연결하는 것을 파이프(pipe)라고 한다.

그리고 pipe 방식으로 주로 처리하는 명령들을 필터라고 부르는데 오늘은 필터 명령어에 어떤 것들이 있는지 알아보자.


word count

파일 내용의 줄 수, 단어 수, 크기를 출력하는 명령어

# 파일 내용의 줄 수, 단어 수, byte 크기를 출력하는 명령어
wc [파일]

'''
-l: 줄 주만 출력
-w: 단어 수만 출력
-c: byte 수만 출력
'''

find

하위 디렉토리들에서 특정 파일을 찾는 명령어

# 현재 디렉토리 아래에서 java 파일을 찾아 경로명을 출력
find . -name "*.java"

# 현재 디렉토리 아래에서 java 파일이나 class 파일 경로명 출력
find . -name "*.java" -o -name "*.class"

# 현재 디렉토리 아래에서 파일 크기가 10K 이상인 파일 경로명 출력
find . -size +10k

# 현재 디렉토리 아래에서 파일 크기가 100M 이하인 파일 경로명 출력
find . -size -100M

'''
킬로바이트: k
메가바이트: M
기가바이트: G
'''

# 디렉토리들의 경로명만 출력
find . -type d

# 파일들의 경로명만 출력
find . -type f

xargs

파이프 기능 사용시 기본적으로 출력이 데이터인데 xargs는 파일명 목록 출력을 입력으로 받아 파일명 목록에 있는 각 파일에 뒷 명령을 수행한다.

# 현재 디렉토리에서 java 파일의 경로명들의 출력 줄 수 세기
find . -name "*.java" | wc -l

# 현재 디렉토리에서 java 파일의 경로명들을 출력으로 받아 각 파일에 대한 줄 수 세기
find . -name "*.java" | xargs wc -l

head

입력에서 선두 몇 줄만 출력하는 명령어

# default로 10줄만 출력
head [파일명]

# 현재 디렉토리의 파일 목록을 5줄만 출력
ls -l | head n -5

less

표준 입력의 내용을 한 페이지씩 끊어서 출력해주는 명령어

# 현재 디렉토리 파일 목록을 한 페이지씩 끊어서 출력
ls -l | less

단축키

단축키 설명
h 도움말
q 실행 종료
e 한 줄 아래로
y 한 줄 위로
f 한 화면 아래로
b 한 화면 위로
/[패턴] 정규식 패턴에 일치하는 문자열 찾기 (앞 방향 기준)
?[패턴] 정규식 패턴에 일치하는 문자열 찾기 (뒷 방향 기준)
/ 앞 방향에서 일치하는 패턴 계속 찾기 (엔터키가 트리거)
? 뒷 방향에서 일치하는 패턴 계속 찾기 (엔터키가 트리거)

grep

  1. 패턴으로 파일 안 내용에서 일치하는 문자열 찾아 해당하는 줄만 출력
  2. 파이프로 사용시 출력 결과를 입력으로 받는데, 입력 내용 중 패턴과 일치한 부분을 출력
# 현재 디렉토리의 java 파일에서 [문자열]이 있는 파일 중 [문자열]이 있는 line을 출력
grep [문자열] *.java

# 디렉토리 목록에서 문자열을 담고 있는 줄만 출력
ls -l | grep [문자열]

# 정규식을 사용할 경우 " " 사용
grep "[정규식]" [파일명]

# "파일명" 할 시 아래의 모든 디렉토리에서 수행
grep [문자열] "[파일명]"

gzip, gunzip

파일 압축 및 압축 풀기

# 파일 압축하기
gzip [파일명]

# 파일명이 여러 개일 때 gzip은 여러 파일을 묶어 압축할 수 없기 때문에 한 개씩 따로 압축
gzip [파일1] [파일2] [파일3]

# 압축 풀기
gunzip [파일명]

tar

디렉토리나 여러 파일들을 묶어서 압축

# 디렉토리 압축
tar -cvzf [압축 파일명].tgz [디렉토리명]

# 여러 파일 압축
tar -cvzf [압축 파일명].tgz [파일1] [파일2] [파일...]

# 압축 파일 내용 보기
tar -tvf [압축 파일명]

# 압축 풀기
tar -xvf [압축 파일명]

 

 

 

 

 

 

728x90
반응형