2swan
Linux 파일 명령어(1) 본문
파일/디렉터리 검색 (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 |