'리눅스 검색'에 해당되는 글 2건

 

개요

 

find 명령어로 파일을 검색하는 방법은 이전 포스팅에서 소개드렸습니다.

[Linux] find 로 파일 검색하기

 

이번 포스팅에서는 검색된 파일들을 지우는 방법을 소개해드리겠습니다.

이 방법을 이용하면 특정 조건을 만족하는 파일들을 찾아서 지우는 것이 가능합니다.

 

예를들면 확장자가 "txt" 인 파일들을 검색하여 지울 수도 있구요, 파일명이 "test"로 시작하는 파일들만 찾아서 지울 수도 있습니다.

 

사용법

 

find PATH [-options] -exec rm {} \;

 

PATH: 검색을 수행할 디렉토리 (해당 디렉토리를 포함한 하위 디렉토리가 검색 대상이 됩니다)

맨 뒤에 \; 는 오타가 아닙니다. 꼭 붙여주세요!

-exec 명령어는 맨 뒤에 ; 까지 argument 로 취하기 때문에 escape 시켜서 넣어주는 것입니다.

 

find . -type f -exec rm {} \;

 

위 명령어의 의미는 지정된 현재디렉토리(.) 기준으로 모든 파일(디렉토리 제외)들을 삭제하는 명령어입니다.

원하는 경로를 설정하면 해당 경로 하위의 모든 디렉토리가 대상이 되기 때문에 되도록이면 root path (/) 를 지정하지 않도록 합시다.

실제 사용할 때는 아래 예제와 같이 -name, -mtime 등의 옵션으로 특정 조건을 만족하는 파일들을 지울 때 사용하면 유용하게 사용할 수 있습니다.

 

 

예제

 

ex) 현재 디렉토리 하위에서 확장자가 "txt" 인 파일 모두 삭제

[root@peterdev test]# find . -type f -name "*.txt" -exec rm {} \;

 

ex) 현재 디렉토리 하위에서 확장자가 "test"로 시작하는 모든 파일 삭제

[root@peterdev test]# find . -type f -name "test*" -exec rm {} \;

 

 

ex) 현재 디렉토리 하위에서 생성된지 30일 이상 된 파일만 삭제

[root@peterdev test]# find . -ctime +30 -type f -exec rm {} \;

 

 

ex) 현재 디렉토리 하위에서 크기가 500 kbyte 이상인 파일만 출력

[root@peterdev test]# find . -size +500k -type f -exec rm {} \;

 

 

 

 

 

-Peter의 우아한 프로그래밍

여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.

 

 

블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요

개요

find 명령어는 리눅스에서 파일을 검색하는 명령어입니다.

특정 조건을 만족하는 파일들을 찾아서 화면에 출력할 수도 있고, 추가 명령어를 실행하여 처리할 수도 있습니다.


예를들면 파일명에 "hello" 가 들어간 파일들을 모두 검색하거나, 파일을 제외하고 디렉토리만 검색하여 출력하고자 할 때 find 명령어를 사용합니다. 

일반적으로 ls 와 grep 을 사용하여 출력하는 방법보다 빠르고 효율적입니다.


사용법

리눅스에서 사용되는 명령어는 모두 대소문자를 구분하니 주의해주세요.

find 명령어에 대한 자세한 설명은 find --help 명령어를 통해 볼 수 있습니다. 

Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

default path is the current directory; default expression is -print
expression may consist of: operators, options, tests, and actions:

기본 경로는 현재 디렉토리이고, 기본 옵션은 -print 라고 나와있네요.

따라서 아무것도 없이 그냥 find 라고만 입력하면 현재 디렉토리 하위의 모든 디렉토리 및 파일들을 화면에 출력해줍니다.


예제

ex) 현재 디렉토리 하위의 디렉토리만 출력

[root@peterdev test]# find . -type d
.
./peter
./john
[root@peterdev test]#

-type d : 디렉토리 타입

-type f : 파일 타입


ex) 현재 디렉토리 하위에서 대소문자 구분 없이 language로 시작하는 모든 파일 출력

[root@peterdev test]# find . -type f -iname "language*"
./peter/language.python
./peter/language.bash
./peter/language.c
./peter/language.cpp
./peter/language.korean
./peter/language.english
./peter/language.delphi
./peter/language.java
./peter/language.javascript
[root@peterdev test]#

표현식(expression)에는 위 예제에서와 같이 와일드 카드 문자(wild card charactor)를 사용할 수 있습니다.


※ 와일드 카드 문자란?

하나 또는 많은 문자를 나타내는 데 사용될 수 있는 키보드 문자.

일반적으로 운영 체계에서 복수의 파일을 이름으로 지정하는 수단으로 사용된다.


-name "expression" : 대소문자 구분하여 파일명으로 검색

-iname "expression" : 대소문자 구분하지 않고 파일명으로 검색



ex) 현재 디렉토리 하위에서 수정된지 300분 이상 된 파일만 검색

[root@peterdev test]# find . -mmin +300 -type f
./test1.txt
./test2.txt
[root@peterdev test]#

-mmin : 수정시간 기준 (분단위)

-mtime : 수정시간 기준 (일단위)

-cmin : 생성시간 기준 (분단위)

-ctime : 생성시간 기준 (일단위)



ex) 현재 디렉토리 하위에서 크기가 0바이트 이상인 파일만 출력

[root@peterdev test]# ls -l
total 12
drwxr-xr-x 2 root root 4096 May  3 14:27 john
drwxr-xr-x 2 root root 4096 May  3 14:27 peter
-rw-r--r-- 1 root root   33 May  3 14:48 test1.txt
-rw-r--r-- 1 root root    0 May  3 05:13 test2.txt
[root@peterdev test]# find . -size +0c -type f
./test1.txt
[root@peterdev test]#

-size -100c : 100 byte 이하

-size +500k : 500 kbyte 이상




-Peter의 우아한 프로그래밍

여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.

블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요