2swan

Linux 파일 명령어(1) 본문

System of Infra/Linux

Linux 파일 명령어(1)

2swan 2024. 4. 26. 12:18

파일/디렉터리 검색 (find)

find [경로] [옵션] [옵션]

find [PATH] [OPTION] [EXPRESSION]

 

파일 정보 출력 (ls)

$ ls -al

파일의 상세정보

 

$ ls -t

파일들을 생성시간순(제일 최신 것부터)으로 표시

 

$ ls -F

파일 표시 시 마지막 유형에 나타내는 파일명을 끝에 표시 ( '/' : 디렉터리, '*' : 실행파일, '@' :링크 등 )

 

파일/디렉터리 복사 (cp)

$ cp [복사대상] [새파일명]

파일을 복사해 새로운 파일 생성 가능

 

$ cp [복사대상] [디렉터리명]

파일을 디렉터리 안에 복사

 

$ cp file1 file2

file1을 file라는 이름으로 복사


$ cp -f file1 file2

강제 복사(file2라는 파일이 이미 있을 경우 강제로 기존 file2를 지우고 복사 진행)

 

$ cp -r dir1 dir2

디렉터리 복사. 폴더 안의 모든 하위 경로와 파일들을 복사

 

파일/디렉토리 삭제 (rm)

rmdir 과 다르게 디렉터리 삭제 시 안에 파일이 존재해도 삭제가능

 

$ rm file1

file1을 삭제

 

$ rm -f file1

file1을 강제 삭제

 

$ rm -i file1

삭제하기전에 사용자 확인

 

$ rm -r dir

dir 디렉터리 삭제  (디렉터리는 -r 옵션 없이 삭제 불가)

 

$ rm *[공통으로 끝나는 확장자]

공통으로 끝나는 확장자로 끝나는 파일 모두 삭제

 

$ rm *

모든 파일 삭제

 

파일/디렉터리 이동 (mv)

기본적으로 mv는 파일/디렉터리 이동

 

$ mv file1 ./dir

file1 파일을 dir 디렉터리로 이동

 

$ mv file1 file2 file3 ./dir

여러개의 파일을 dir 디렉터리로 이동

 

파일/디렉터리 이름변경 (mv)

같은 디렉터리내에서 파일 이동시 이름이 변경된다.

 

$ mv file1 file2

file1 파일을 file2 파일로 이름 변경

 

$ mv ./dir1 ./dir2

dir 디렉터리를 dir2 디렉터리로 이름 변경

 

 

빈 파일 생성 & 수정 날짜 변경 (touch)

존재하지 않는 파일이면, 파일크기가 0인 빈 새 파일 생성

 

이미 존재하는 파일이라면, 최종 수정기간 변경

 

 

$ touch filename

filename의 파일을 생성

 

$ touch -c filename

filename의 시간을 현재시간으로 갱신

 

$ touch -t 202404260102 filename

filename의 시간을 날짜 정보(YYYYMMDDhhmm)로 갱신 ( 202404261701 => 2024.04.26 17:01 )

 

$ touch -r oldfile newfile

newfile의 날짜 정보를 oldfile의 날짜 정보와 동일하게 변경

 

파일 유형 확인 (file)

$ file [파일명]

옵션 -b, --brief는 파일명은 출력하지 않고 파일 유형만 출력

 

파일 내용 전체 출력 (cat)

$ cat file1

file1의 내용 출력

 

$ cat file1 file2

file1과 file2의 내용을 출력

 

$ cat file1 file2 | more

file1과 file2의 내용을 페이지별로 출력

 

$ cat file1 file2 | head

file1과 file2의 내용을 처음부터 10번째 줄까지만 출력

 

$ cat file1 file2 | tall

file1과 file2의 내용을 끝에서부터 10번째 줄까지만 출력

 

파일 내용 앞부분 출력 (head)

지정한 파일의 앞부분을 출력.

옵션으 지정하지 않으면 첫 10줄 출력

 

$ head [option] file

$ head -5 java.cfg

앞에서 5행만 출력

 

파일 내용 뒷부분 출력 (tail)

지정한 파일의 끝 부분을 출력

옵션을 지정하지 않으면 10줄 출력

 

$ tail [option] file

$ tail -5 java.cfg

뒤에서 5행만 출력

 

파일 내용 페이지 단위로 출력 (more)

단축키 설명
Space 다음 페이지 이동
숫자 + z 숫자줄 만큼 다음으로 이동
q 또는 Q more 명령어 종료
f 다음 페이지로 이동
b 이전 페이지로 이동
= 현재 줄 번호 표시
v vi 에디터로 실행

 

$ more [option] file

$ more +100 java.jpg

100행부터 출력

 

파일 내용 페이지 단위로 출력 (less)

less [option] file

# -c, --clear-screen : 화면을 지우고 최상단부터 결과 출력

# -s--squeeze-blank-lines : 연속된 빈줄을 합쳐 하나의 빈줄로 만듦

# -e : 파일 끝에서 한번 더 파일 끝으로 이동하면 자동으로 프로그램 종료

# -N : 각줄마다 행 번호를 함께 출력

 

파일 패턴 검색 (grep)

텍스트 파일을 한줄씩 읽어서 지정한 패턴과 일치하는 문자열 보여주는 명령어

 

$ grep 'error' 파일명

특정 파일에서 'error' 문자열 찾기

 

$ grep 'error' *

현재 디렉터리내에 있는 모든 파일에서 'error' 문자열 찾기

 

$ grep 'error' *.log

특정 확장자를 가진 모든 파일에서 'error' 문자열 찾기

 

$ grep [a-c] 파일명

특정 파일에서 a,b,c로 시작하는 단어를 모두 찾는다.

 

$ grep '^[ab]' 파일명

특정 파일에서 a나 b로 시작되는 모든 행을 찾는다.

 

$ cat file.txt | grep 'DOG' | grep 'CAT'

특정 파일에서 여러개 문자열

 

* 실시간 로그 보기 (tail + grep)

$ tail -f mylog.log | grep 192.168.0.1

 

파일 내용 정보 출력 (wc)

지정한 파일에 대해 단어, 개행문자, 문자의 개수 등을 출력

옵션 생략 시 줄, 단어, Bytes 수를 기본으로 출력

 

$ wc [option] file

 # -l, --lines : 줄수를 셈

 # -w, --words : 단어의 개수를 셈

 # -c, --bytes : 바이트 수를 셈

 # -L, --max-line-length : 가장 긴줄의 길이를 출력

 

파일 내용 정렬(sort)

텍스트 파일을 한줄 씩 읽어서 한줄 씩 정렬

 

$ sort [옵션] [파일명]

 # -r : 역순(내림차순) 정렬 / 기본은 오름차순

 # -f : 대소문자 구별안함

 # -n : 숫자로 정렬

 # -k숫자 : k1 => 1번째 필드를 기준으로 정렬

 # -u : 정렬 후 중복된 내용을 제거

 # -b : 선행 공백 무시

 # -R : 해시의 키 값 기준, 랜덤 정렬

 # -h : --human(2K, 1G)

 # -c : 정렬되어 있는지 검사

 # -m : 이미 정렬된 파일들을 병합

 # -o : 파일 출력

 # -t : 필드 구분자를 지정

 

$ sort sort.txt

sort 명령어를 사용하면 오름차순으로 정렬된다.

 

$ cat sort.txt | sort

cat 명령어를 통해 파일을 열고 파이프를 통해 sort 명령어를 사용해도 된다.

sort.sort.txt 와 같다

 

$ sort -r sort.txt

$ cat sort.txt | sort -r

-r 옵션으로 역순으로 정렬

 

$ sort -u sort3.txt

-u 옵션으로 정렬 후 중복 값 제거

 

$ sort -f sort5.txt

-f 옵션으로 대소문자 구분 없이 정렬

대문자가 먼저 앞으로 온다

 

$ cat /etc/passwd | sort -c

파일이 정렬되어 있는지 검사

 

$ sort /etc/passwd -o output.txt

정렬 후 파일로 저장

 

파일 내용 자르기 (cut)

파일에서 필드를 뽑아낸다

필드는 구분자로 구분할 수 있다.

 

$ cut [option] file ...

  # -c 문자위치 : 잘라낼 곳의 글자 위치를 지정한다. 콤마나 하이픈을 사용하여 범위를 정할 수도 있으며, 이런 표현들을     혼합아여 사용할 수도 있다.

  # -f 필드 : 잘라낼 필드를 정한다.

  # -d 구분자 : 필그를 구분하는 문자를 지정한다. 디폴트는 탭 문자다.

  # -s : 필드 구분자를 포함할 수 없다면 그 행은 하지 않는다.

 

$ cut -f 1 -d ":" /etc/passwd | head -5

/etc/passwd 내용 각 라인 문자열들을 ":" 기준으로 나누고 그중 첫번째 필드만 가져와라 (5줄만 출력)

 

$ cut -f 1-3 -d ":" /etc/passwd | head -5

1 ~ 3 번째 필드를 가져와라

 

$ cut -c 1-4 /etc/passed | head -5

문자열 필드 1에서 4번째까지 문자만 골라 출력

 

 

파일 나누기 (split)

큰 파일을 여러 작은 파일로 나눌 때 사용

로그 파일이 엄청 클때 split으로 파일을 분할 한 후 마지막 파일에서만 검색

 

$split [option] file [file_name]

 # -l : 라인수 기준으로 파일을 분할

 # -b : 분할되는 기준을 바이트 크기로 분할

 # -a : 분할되는 파일뒤에 붙을 길이를 지정

 # -d : 분할 파일 이름뒤에 영문이 아닌 숫자로 지정 (0부터 시작)

 # -n : 파일을 균등하게 1/N 나누어 분할

 # -C : 라인수 기준으로 지정 바이트가 넘지 않도록 파일을 분할

 

파일 합치기 (cat)

split으로 나누었던 여러 파일들을 다시 하나로 합치기

 

$ cat pass_* > pass.copy 

 

파일 비교 (cmp)

두 파일이 다르면 내용이 달라지기 시작하는 위치 (문자수, 줄수)출력

완벽하게 두개가 같을 시 no 출력

-b 두 파일간의 다른 바이트들을 출력
-i 입력어의 최초 SKIP 바이트들을 건너뛴다
-l 틀린 문자의 갯수를 출력
-s 아무것도 출력하지 않고 종료 코드만을 출력
0 : 파일이 같음
1 : 파일이 다름
2 : 파일에 접근 불가
-v 버전 정보 출력

$ cmp [파일1] [파일2]

 

파일 비교 (diff)

cmp와는 달리 두 파일을 비교 하여 같아지는 조건 방침을 알려준다.

-c 두 파일간의 차이점 출력
-d 두 파일간의 차이점을 상세하게 출력
-r 두 디렉터리간의 차이점 출력, 서브디렉터리까지 비교
-i 대소문자의 차이 무시
-w 모든 공백 차이 무시
-s 두 파일이 같을 때 알림

 

$ diff [파일1] [파일2]

 

'System of Infra > Linux' 카테고리의 다른 글

Linux 32비트 64비트 확인방법  (0) 2024.04.30
Linux find 명령어(2)  (1) 2024.04.26
Linux 디렉토리 명령어  (1) 2024.04.26
Linux Port  (1) 2024.04.26
Linux ps 명령어  (0) 2024.04.25