쌓고 쌓다

[Linux] 파일 조작 본문

프로그래밍/리눅스

[Linux] 파일 조작

승민아 2022. 4. 5. 21:02

Create file

  • cat > accountsfile
  • > accountsfile (empty file)
  • touch accountsfile2

Delete file

: rm [-options] filename or directoryName

  • rm 파일명
  • rmdir 파일명 : 비어있는 디렉토리만 삭제 가능
  • rm -i : 파일을 삭제하기전 경고를 해줌
  • rm -r 파일명 : 모든 파일과 하위 디렉토리까지 삭제 가능

Copy file

: cp [-options] source destination

  • cp test1.txt test2.txt : test1.txt를 text2.txt로 복사
  • cp -r test1 test2 : test1 하위 디렉토리까지 test2 디렉토리로 복사
  • ex, mkdir -p ./week4/test1/test2/test3 -> cp -r week4/ week4_1
  • 옵션 -i : 복사 대상 이름이 이미 있을 경우 덮어쓸 건지 물어봄
  • 옵션 -u : 원본 파일이 목적 파일보다 최신일 경우에 복사

ex,

  • cp file1 file2 : file1을 같은 디렉토리에 file2로 복사
  • cp file1 dir1/file2 : 목적지가 디렉토리라면 디렉토리 안에 복사, file2의 이름으로 복사임
  • cp memo_file memo.safe : 다른 이름으로 복사
  • cp file1 file2 file3 dir : file1~3을 dir 디렉토리에 복사
  • cp testdir/* test2dir : 디렉토리 안의 모든 파일을 다른 디렉토리에 복사

Move file

: mv [-option] source destination

원본이 없어진다는 것만 제외하면 cp와 비슷하다.

  • -i : 이동될 파일의 이름이 이미 존재하면 덮어 쓸지 묻기
  • -u : 파일이 업데이트된 경우에만 이동

 

Find file

: find [pathname] [-name filename]

  • -name : 찾을 파일 이름을 지정
  • -iname : 대소문자 구분하지 않고 검색 ( insensitive )
  • -mmin n : min은 분을 기준으로
  • -mtime n : 파일 수정 시각을 기준으로 파일 검색 -mtime +1 ( 24시간 이상인 파일 검색 )
  • -size : 파일 사이즈를 지정

EX)

  • find . -name [FILE] : 현재 디렉토리 아래 모든 파일 및 하위 디렉토리에서 파일 검색
  • find ./* -size +1k : 1이상 크기의 파일을 검색
  • find ./* -size -1k : 1이하 크기의 파일을 검색
  • find ./* -size 1k : 1크기의 파일을 검색 ( 사이즈 단위 b:블록단위, c:byte, k:kbyte, w:2byte 워드 )
  • find ./* -mmin +1 : 1분 이상 수정된 파일 검색
  • find ./* -mtime +3 : 3일 이상 수정된 파일 검색
  • find . -mmin -1 : 현재 디렉토리에서 1분 이내

 

Combine File

: cat으로 파일들을 합치기 가능

  • cat product1 product2 > product3 : product1,2를 합쳐 3를 생성

Combine file with paste

: paste로 파일 합치기 가능

paste [-options] sourcefiles [> destination file]

  • -d : 특정한 구분자를 지정
  • paste -d',' vegetables bread > food 
  • paste product1 product2 : 두개가 붙어서 출력 ( product1 아래 2가 붙는 것이 아닌 왼쪽오른쪽으로 즉 열로 붙음)

 

Extracting field with cut

: cut 명령어로 문자열 또는 필드를 잘라 새로운 문자열을 만든다.

: cut [-f list] [-d char] [file1 file2 ...] or cut [-c list] [file1 file2 ...]

-d 지정한 문자를 구분자로 사용
-f 필드를 기준으로 잘라내기
-c 문자열을 기준으로 잘라내기
  • -f 1,14 : 필드1과14를 지정 
  • cut -f 4-6 -d : phones1 : 4~6 필드를 잘라온다, : 를 구분자로

 

Sort File

: sort [-options] [filename]

  • -k : 정해진 필드를 기준으로 정렬 ex) sort -k2 test.txt : 2번째 필드로 정렬
  • -t : 구체적인 구분자를 지정한다 ex) sort -t, test.txt : ,를 구분자로 정렬
  • -t , 와 -k 2도 가능 띄어쓰기 ㄱㅊㄱㅊ
  • sort -t, -k2 test.txt : ,를 구분자로 2번째 필드를 정렬

 

Grep Command

: 파일의 내용에서 특정 내용(패턴)을 찾을 때 사용

: grep [-options] pattern [filename]

  • -H : 출력할 때 파일 이름 표시
  • -i : 대/소문자 무시
  • -r : 하위 디렉토리 탐색
  • -n : 출력할 때 라인 번호도 포함
  • -l : 패턴이 존재하는 파일 이름만 표시
  • -c : 파일 당 패턴이 일치하는 라인의 수를 출력
정규 표현식 설명
^ 행의 첫 글자가 같은 행
$ 행의 마지막 글자가 같은 행
. 하나의 문자와 대응되는 행
[ ] [ ] 안에 어떤 문자라도 매칭되는 행
  • ^app : apple, application
  • le$ : apple
  • a..le : apple
  • appl[e,d,o] : apple, appld, applo ( 하나라도 매칭 되면 합격 )
  • [a-z] : -는 범위를 나타냄 ( a,b,c.... and z )
  • 정규 표현식은 " 가 필요하다.
  • ex) "^app"
  • grep -r dltmdals6718 /etc : /etc 하위 디렉토리에서 dltmdals6718 찾기?

find 명령어 결과를 grep로 보내기

: find . -iname "*.h" | xargs grep -n "dltmdals6718"

xargs가 이후, 처리(단독사용불가)라 |와 함께 사용

find한 파일결과 가지고 뒤에 내용을 실행함.

'프로그래밍 > 리눅스' 카테고리의 다른 글

[Linux] diff, vimdiff, wc  (0) 2022.04.06
[Linux] uniq 명령어  (0) 2022.04.06
[Linux] 리다이렉션 ( Redirection )  (0) 2022.04.05
[Linux]Vi 에디터  (0) 2022.03.22
[Linux] 파일 권한  (0) 2022.03.15
Comments