✅ find 명령어
- 파일 및 디렉토리를 검색할 때 사용하는 명령어
find [옵션][경로][EXPRESSION..]
- find 명령어는 옵션보다 표현식이 더 많이 사용된다.
✅ find 옵션
- -P : 심볼릭 링크를 따라가지 않고, 심볼릭 자체 링크 정보를 사용한다.
- -L : 심볼릭 링크에 연결된 파일 정보를 사용한다.
- -H : 심볼릭 링크를 따라가지 않으나, Command Line Argument를 처리할 때는 예외로 한다.
- -D : 디버그 메세지를 출력한다.
✅ find EXPRESSION
- -name : 지정된 문자열 패턴에 해당하는 파일 검색.
- -empty : 빈 디렉토리 또는 크기가 0인 파일 검색.
- -delete : 검색된 파일 또는 디렉토리 삭제.
- -exec : 검색된 파일에 대해 지정된 명령 실행.
- -path : 지정된 문자열 패턴에 해당하는 경로에서 검색.
- -print : 검색 결과를 출력. 검색 항목은 newline으로 구분. (기본 값)
- -print0 : 검색 결과를 출력. 검색 항목은 null로 구분.
- -size : 파일 크기를 사용하여 파일 검색.
- -type : 지정된 파일 타입에 해당하는 파일 검색.
- -mindepth : 검색을 시작할 하위 디렉토리 최소 깊이 지정.
- -maxdepth : 검색할 하위 디렉토리의 최대 깊이 지정.
- -atime : 파일 접근(access) 시각을 기준으로 파일 검색.
- -ctime : 파일 내용 및 속성 변경(change) 시각을 기준으로 파일 검색.
- -mtime : 파일의 데이터 수정(modify) 시각을 기준으로 파일 검색.
✅ find 사용 예제
find 사용 예명령어 옵션
현재 디렉토리에 있는 파일 및 디렉토리 리스트 표시 | find |
대상 디렉토리에 있는 파일 및 디렉토리 리스트 표시 | find [PATH] |
현재 디렉토리 아래 모든 파일 및 하위 디렉토리에서 파일 검색 | find . -name [FILE] |
전체 시스템(루트 디렉토리)에서 파일 검색 | find / -name [FILE] |
파일 이름이 특정 문자열로 시작하는 파일 검색 | find . -name "STR*" |
파일 이름에 특정 문자열이 포함된 파일 검색 | find . -name "*STR*" |
파일 이름이 특정 문자열로 끝나는 파일 검색 | find . -name "*STR" |
빈 디렉토리 또는 크기가 0인 파일 검색 | find . -empty |
특정 확장자를 가진 모든 파일 검색 후 삭제 | find . -name "*.EXT" -delete |
검색된 파일 리스트를 줄 바꿈 없이 이어서 출력하기 | find . -name [FILE] -print0 |
파일 또는 디렉토리만 검색하기 | find . -name [FILE] -type f |
파일 크기를 사용하여 파일 검색 | find . -size +[N]c -and -size -[M]c |
검색된 파일에 대한 상세 정보 출력. (find + ls) | find . -name [FILE] -exec ls -l {} \; |
검색된 파일의 라인 수 출력. (find + wc) | find . -name [FILE] -exec wc-l {} \; |
검색된 파일에서 문자열 찾기. (find + grep) | find . -name [FILE] -exec grep "STR" {} \; |
검색 결과를 파일로 저장. (find, redirection) | find . -name [FILE] > [SAVE_FILE] |
검색 중 에러 메시지 출력하지 않기 (find, redirection) | find . -name [FILE] 2> /dev/null |
하위 디렉토리 검색하지 않기 | find . -maxdepth 1 -name [FILE] |
검색된 파일 복사. (find + cp) | find . -name [FILE] -exec cp {} [PATH] \; |
출처
find / -name [파일명]
현재 디렉토리 아래 모든 파일 및 하위 디렉토리에서 파일을 검색한다.
find /root -type l -ls
루트 디렉토리 아래의 심볼릭 링크 정보를 자세히 출력한다.
"-type" 표현식을 사용하면 파일 종류를 지정하여 검색할 수 있다.
- b : block special
- c : character special
- d : directory
- f : regular file
- l : symbolic link
- p : FIFO
- s : socket
find /root -type f -name aaa -user root
find /root -type f -name aaa -user 0
root 디렉토리에서 regular file을 찾되 이름이 소유자가 root이고 파일명이 aaa인 파일을 찾는다.
find /root -type f -name aaa -user test2
find /root -type f -name aaa -user user
find /root -type f -name AAA
find /root -type f -iname AaA
test2라는 계정이 없기 때문에 알 수 없는 사용자라는 문구가 뜬다.
user 계정에는 파일명이 aaa인 파일이 없으므로 아무것도 뜨지 않는다.
root 디렉토리 하위에 AAA 라는 파일명은 없지만 -iname은 대/소문자를 구분하지 않으므로 파일명이 aaa인 것도 뜬다.
find / -type f \( -name "html" -o -name "sh" \) 2>/dev/null
regular file 중에서 html 또는 sh가 들어간 파일명을 찾는다. 이때 2>/dev/null은 에러 메세지를 null로 처리한다는 뜻
find /root -type f -name 'aa*'
find /root -type f -name '*aa*'
find /root -type f -name '*aa'
find . -samefile aaa
find . -inum
-exec 명령어 {} \;
# 예시
find .-name '*bak' -exec rm {} \;
# 파일명이 bak로 끝나는 파일을 찾아서 삭제
- {} 안에는 찾은 파일명이 들어가게 된다.
rm 명령어를 이용하여 aaa, bbb 파일을 지운 후 cp 명령어를 이용해 /etc/passwd 내용을 aaa 파일에 복사한다.
ln 명령어로 aaa와 bbb를 하드 링크로 연결하고 ls 명령어로 aaa, bbb 파일을 보면 inode가 같음을 확인할 수 있다.
그 후 aaa와 같은 inum을 가진 (여기서는 aaa와 bbb 뿐이다) 파일을 cp 명령어로 /tmp에 복사한다.
ls 명령어로 /tmp 를 확인하면 aaa, bbb 파일이 있는 것을 확인할 수 있다.
✅ tar 명령어
- Tape ARchiver의 앞글자를 따서 만들어졌다.
- 여러개의 파일을 하나의 파일로 묶거나 풀 때 사용하는 명령어
- 단순히 파일을 묶는 용도이며 데이터 크기를 줄이기 위한 파일 압축을 수행하지 않는다.
✅ tar 옵션
- -f : 대상 tar 아카이브 지정. (기본 옵션)
- -c : tar 아카이브 생성. 기존 아카이브 덮어 쓰기. (파일 묶을 때 사용)
- -x : tar 아카이브에서 파일 추출. (파일 풀 때 사용)
- -v : 처리되는 과정(파일 정보)을 자세하게 나열.
- -z : gzip 압축 적용 옵션.
- -j : bzip2 압축 적용 옵션.
- -t : tar 아카이브에 포함된 내용 확인.
- -C : 대상 디렉토리 경로 지정.
- -A : 지정된 파일을 tar 아카이브에 추가.
- -d : tar 아카이브와 파일 시스템 간 차이점 검색.
- -r : tar 아카이브의 마지막에 파일들 추가.
- -u : tar 아카이브의 마지막에 파일들 추가.
- -k : tar 아카이브 추출 시, 기존 파일 유지.
- -U : tar 아카이브 추출 전, 기존 파일 삭제.
- -w : 모든 진행 과정에 대해 확인 요청. (interactive)
- -e : 첫 번째 에러 발생 시 중지.
✅ tar 명령 사용 예제
현재 디렉토리의 모든 파일과 디렉토리를 tar로 묶기 | tar cvf T.tar * |
대상 디렉토리를 포함한 모든 파일과 디렉토리를 tar로 묶기 | tar cvf T.tar [PATH] |
파일을 지정하여 tar 아카이브로 묶기 | tar cvf T.tar [FILE_1] [FILE_2] |
tar 아카이브를 현재 디렉토리에 풀기 | tar xvf T.tar |
tar 아카이브를 지정된 디렉토리에 풀기 | tar xvf T.tar -C [PATH] |
tar 아카이브의 내용 확인하기 | tar tvf T.tar |
현재 디렉토리를 tar로 묶고 gzip으로 압축하기 | tar zcvf T.tar.gz * |
gzip으로 압축된 tar 아카이브를 현재 디렉토리에 풀기 | tar zxvf T.tar.gz |
현재 디렉토리를 tar로 묶고 bzip2로 압축하기 | tar jcvf T.tar.bz2 * |
bzip2로 압축된 tar 아카이브를 현재 디렉토리에 풀기 | tar jxvf T.tar.bz2 |
tar 아카이브 묶거나 풀 때 파일 별 진행 여부 확인하기 | tar cvfw T.tar * |
'Linux' 카테고리의 다른 글
[Linux] 리눅스 명령어 - 파일 입출력 명령어(cut, paste, diff) (0) | 2022.02.22 |
---|---|
[Linux] 리눅스 명령어 - Xargs (0) | 2022.02.22 |
[Linux] 리눅스 명령어 - 파일 상태 확인 명령어 (stat) (0) | 2022.02.21 |
[Linux] 리눅스 명령어 - 시스템 명령어 (df, du) (0) | 2022.02.21 |
[Linux] 리눅스 명령어 - 시스템 명령어(w, who) (0) | 2022.02.21 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!