쌓고 쌓다
[Linux] 파일 조작 본문
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