Tuesday, October 17, 2006
리눅스 파일 찾기 명령: find 사용법 예제, Linux File Find Command
find 라는 명령으로, 디스크에 저장된 각종 파일/디렉토리를 검색할 수 있습니다.
현재 디렉토리에서, pl 확장자를 가진 모든 파일 찾기
(현재 디렉토리 밑의 하위 디렉토리까지 다 찾습니다.)
루트에서부터, 즉 전체 하드에서, pl 확장자를 가진 모든 파일 찾기
전체 하드 디스크에서, 파일명이 ab 로 시작하는 모든 파일 찾기
전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기
전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기
+ ls 명령 형식으로 출력
뒤에 -ls 라는 옵션을 붙이면 됩니다.
전체 하드 디스크에서, 디렉토리 이름이 et 로 시작하는 모든 디렉토리 찾기
주의! 옵션 순서를 바꾸면 에러가 납니다.
위의 파일 찾기 명령의 출력 결과를 텍스트 파일로 저장하는 법: ▶▶ 유닉스 파일 찾기] find 명령어 출력 결과를, 텍스트 파일로 저장; UNIX File Find Command
파일 찾기 (파일명 검색)
현재 디렉토리에서, pl 확장자를 가진 모든 파일 찾기
find -name '*.pl'
(현재 디렉토리 밑의 하위 디렉토리까지 다 찾습니다.)
루트에서부터, 즉 전체 하드에서, pl 확장자를 가진 모든 파일 찾기
find / -name '*.pl'
전체 하드 디스크에서, 파일명이 ab 로 시작하는 모든 파일 찾기
find / -name 'ab*'
전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기
find / -name '.bash*'
전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기
+ ls 명령 형식으로 출력
find / -name '.bash*' -ls
뒤에 -ls 라는 옵션을 붙이면 됩니다.
디렉토리명 찾기
전체 하드 디스크에서, 디렉토리 이름이 et 로 시작하는 모든 디렉토리 찾기
find / -name 'et*' -type d
주의! 옵션 순서를 바꾸면 에러가 납니다.
위의 파일 찾기 명령의 출력 결과를 텍스트 파일로 저장하는 법: ▶▶ 유닉스 파일 찾기] find 명령어 출력 결과를, 텍스트 파일로 저장; UNIX File Find Command
tag: linux
리눅스 Linux | 유닉스 Unix | 시그윈 Cygwin
(1)
find . -name '*.abc' -exec rm {} -rf \;
이 경우에는 find 다음 '.'(점)이 있는 데 이 디렉토리부터 하위 디렉토리까지 확장자 abc를 가진 파일을 모두 지우라는 뜻인 맞죠? find . <-- 이 부분을 질문하고 싶었습니다.
(2)
찾아서 지울 때 위 명령어에서 '.abc'와 '*.abc'를 수행할 경우, *이 붙여져 있으면 모든이라는 것을 알겠는 데 그냥 '.abc'로 해버리면 파일 한개만 삭제하고 수행이 끝나나요?
find . 에서 마침표는 생략 가능합니다.
위에서, 공백+마침표+공백, 은 "현재 디렉토리"를 의미합니다.
마침표+abc, 는 그냥 파일명이 마침표로 시작하는 파일, 즉 "숨김파일"을 의미합니다.
Ubuntu 11.04 에서 테스트했더니
(1)번 명령어가 잘 작동했습니다.
.abc 라는 숨김파일이 있다면 그것조차 삭제됩니다.
'*.abc' 는 .abc 로 끝나는 모든 파일을 의미합니다.
리눅스/유닉스에는 확장자 개념이 전혀 없거나 희박합니다.
MS윈도우에서는 *.abc 가, abc 확장자를 가진 모든 파일을 의미하지만
리눅스에서는 확장자 개념이 없기 때문에, 그냥 파일명 끝부분이
무조건 .abc 로 끝나는 모든 파일을 의미합니다.
'.abc' 는 .abc 라는 파일 딱 1개만 의미합니다.
리눅스/유닉스에서는 파일명이 마침표로 시작하면 숨김파일(히든파일)이 됩니다.
.abc 라는 숨김파일이 현재 디렉토리나 하위 디렉토리에 있다면 삭제되고, 없다면 아무것도 삭제되지 않습니다.
감사합니다!
도움이 많이 됐습니다.
<< Home