### File 관련 명령어 키워드
## file 정보: file, stat,
##touch
##find
#1 file
1) file <file> : file 타입 확인 [파일타입은 magic 데이터(/usr/share/file/magic)를 통해 알 수 있다.]
#2 stat [option] <file>
file의 meta data 출력( meta data: 내용이 아닌 수식하는 정보, 예를 들어 파일이름, 생성시간, 권한 등등)
(~는 home dir 의미)
실습. old_bashrc2 의 stat을 통해 Modify, Change 중에 어느 시간이 변하는가?
$ cp ~/.bashrc ~/old_bashrc
//최근에 입력한 이름 기입됨.
$ stat <ALT-.>
$ mv ~/old_bashrc ~/old_bashrc2
$ stat <ALT-.>
Change 시간(ctime)이 변했다.
(Modify는 cp할 때 바뀜)
** 파일 생성 명령어
touch 파일명
cat > 파일명
vi 파일명
- 파일 삭제
rm –rf 파일명
#3 find - find 기능 통해 특정 대상 검색 하여 삭제 또는 백업 가능
1) find directory [expression] - find는 유닉스 계열에서 중요한 명령.
2) 조건의 표기 (조건을 통해 검색됨)
n : 정확히 n인 경우를 검색
+n: n보다 큰 경우 검색(n포함)
-n: n보다 작은 경우를 검색(n포함)
-maxdepth level 최대 깊이 제한( 주로 사용)
-mindepth level: 최소깊이 제한.
*: 와일드 카드
사용법 : name * (*는 name으로 시작하고 뒤에는 아무것이나 와도 됨)
https://jeonkkochbi.tistory.com/15
리눅스 와일드카드 개념 & 활용으로 고급 명령어 사용! - 2편
리눅스 와일드카드 ( wildcard ), 정확히는 와일드카드 문자 ( wildcard character ) 이다. 와일드카드는 컴퓨터에서 특정 명령어로 명령을 내릴 때, 여러 파일을 한꺼번에 지정할 목적으로 사용하는 문자
jeonkkochbi.tistory.com
#4 find 예제
//빈파일 여러개 만듦.
//dd 덤프뜨는 명령어
//용량이 다른 덤프들을 여러개 만들 예정. (800k ~ 2.1 Mb까지의 파일 여러개 만드는 명령어)
jlim@jlim-vm:~/temp0$ for i in {8..21}; do dd bs=100000 count=$i \
> if=/dev/zero of=./${i}.00k.dat; done
// ‘.’ 현재 디렉토리, 조건은 –name
이름이 ‘ [89]*k.dat ’ 찾기. scale brace 안에 숫자는 옵션이다. 8또는 9 중 하나.
*은 아무거나 다들어오고 뒤에는 k로 끝나고 파일명은 .dat로 끝남.
//사이즈 1M에 해당하는 파일만 보여짐. 0~1M
// -1M 라해도 동일하게 나옴.
[ ] 안에 문자(숫자)중 하나라도 있을시 출력.
jlim@jlim-vm:~/temp0$ find . -name '[89]*k.dat'
jlim@jlim-vm:~/temp0$ find . -name '*k.dat' -a –size 1M
굳이 find 뒤에 띄어쓰기+ dot 안붙이고 find -name "*k.dat" -a –size 1M 해도 됨
//사이즈 를 통한 find
jlim@jlim-vm:~/temp0$ find . -name '*k.dat' -o -size +1500k
// -a 없어도 and연산자 생략됨
jlim@jlim-vm:~/temp0$ find . -name '*k.dat' -a –size +1500k
// mtime 이 –1 mtime은 단위가 day 시간으로 따지면 24h이 된다.
24시간 기준으로 –1이니, 24시간 아래가 되야함.
사이즈는 +1M보다 커야함.
1m보다 커야하고 최근에 24시간 이내의 파일만 검색하게 됨
jlim@jlim-vm:~/temp0$ find . -mtime -1 –size +1M
find 사용 시 주의점:
*.txt 입력 시 쉘에서 이를 해석하는 경우가 있다. 쉘에서 해석하는 걸 glob라한다.
현 디렉터리에 *.txt에 매칭되는 파일이 있으면 쉘의 wildcard 해석 기능으로 인해 변경(치환)이된다.
잘못된 예)
jlim@jlim-vm:~/temp0$ find . -name *.txt
올바른 예)
표현식을 (single or double) quotation marks single 또는 double quote (‘ ’, “ ”) 로 감싸주자.
#5 검색 후 작업지시. (이 부분이 find에서 핵심)
\; 는 rm a.tmp; rm b.tmp ... 이렇게 일일이 찾아서 지움
\+ 는 rm –rf a.tmp b.tmp c.tmp 한번에 해당 파일들 찾아서 지움.
1) find .... -exec 명령어 \;
2) find .... -exec 명령어 \+
eg. “*.tmp” 파일을 찾아서 지우는 명령
jlim@jlim-vm:~/temp0$ find . -name "*.tmp" -exec rm {} \
jlim@jlim-vm:~/temp0$ find . -name "*.tmp" -exec rm -rf {} \;
jlim@jlim-vm:~/temp0$ find . -name "*.tmp" -exec rm -rf {} \+
-rf에서 -는 디렉토리까지 .tmp 파일찾아 삭제
#find 연습문제 #1
현재 디렉터리 아래에서 최근 24시간 이내에 내용이 변경되어진 일반 파일을 찾아서 mtime_b24.txt 파일로 리스트를 저장해보자.
아래는 우선조건이다.
조건1) mtime이 24시간 이내: -mtime –1
조건2) 일반 파일: -type f
find ./ ..생략...
jlim@jlim-vm:~/tmp$ find . -mtime -1 -type f
**루트 디렉터리에서 찾고싶으면 ./를 /로 바꾼다.
find / -mtime –1 . -type f > mtime_b24.txt(파일명)
#find 연습문제 #2 [추후 작성]
연습문제 1에서 조건 추가.
maxdepth 3 (3단계까지 제한을 둠)
maxdepth 3은 맨처음에 무조건 나와야함.
cp 명령을 입력
생략된부분이 조건에 맞는 것들이 {}안에 들어오고
backup을 해당 명령어 치기전에 만들어져야함.
find / maxdepth 3 -exec cp {} ~/backup \; > mtime_b24.txt
해당 내용은 프로그래머스 리눅스 강의 김선영 선생님의 강의를 들으며 기록했습니다.
'프로그래머스 > 리눅스' 카테고리의 다른 글
리눅스 기초(2-5) 링크에 대해 (0) | 2022.11.03 |
---|---|
리눅스 기초 2-4) UNIX command (0) | 2022.11.03 |
리눅스 기초 (2-2) File 관련명령어 (0) | 2022.11.03 |
리눅스 기초(2-1) 명령어 summary (0) | 2022.11.03 |
1일차 man , locale, LANG 에 대해 (0) | 2022.11.02 |