UNIX 및실습 7 장. 파일과디렉토리검색하기 1
학습목표 파일의내용을검색하는방법을익힌다. 조건에맞는파일과디렉토리를찾는방법을익힌다. 명령이있는위치를찾는방법을익힌다. 2
Section 01 파일내용검색 - grep 지정한파일에패턴이들어있는지검색 옵션 옵션 grep [ 옵션 ] 패턴파일명들 3 기능 -i 대소문자를무시하고검색 -l 해당패턴이들어있는파일이름을출력 -n 각라인의번호도함께출력 -v 명시된패턴과일치하지않는줄을출력 -c 패턴과일치하는라인수출력 -w 패턴이하나의단어로된것만검색
정규표현식 (Regular Expression) (1) 검색에서동일한문자와일치시키는데사용되는문자패턴 정규표현식에사용되는메타 (meta) 문자 ^. * [ ] [a-z] [^ ] \ 줄의시작지시자줄의끝지시자문자한개와일치 0개이상의문자와일치설정중한문자와일치설정한범위안의한문자와일치설정에속하지않은문자와일치메타문자기능제거 4
정규표현식 (Regular Expression) (2) 여러유닉스 / 리눅스프로그램에서사용되는추가메타문자 \< 단어의시작지시자 \> 단어의끝지시자 \(..\) 나중에사용하기위한태그일치문자 x\{m\} x문자를 m번반복 x\{m, \} x문자를적어도 m번이상반복 x\{m,n\} x문자를 m번이상 n번이하반복 예 /\<love/ /love\>/ o\{5, 10\} : love로시작하는단어가포함된줄 : love로끝나는단어가포함된줄 : o가 5번이상 10번이하반복되는문자열 5
grep 의미 grep 명령 ex 편집기프로그램에서기원 문자검색을위해 :/pattern/p (pattern 이있는줄출력 ) 보통범위 ( 전체파일 ) 를지정하기위해 :g/pattern/p 이패턴이정규표현식 :g/re/p 6
파일내용검색 - grep grep 명령사용예제 기본데이터 (grep.dat) UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 1) 기본검색 grep unix grep.dat unix+ 123 2) 대소문자무시 -i grep -i unix grep.dat UNIX 12345 unix+ 123 7
파일내용검색 - grep grep 명령사용예제 기본데이터 (grep.dat) UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 3) 파일이름출력 : -l grep -l unix *.dat grep.dat 4) 줄번호출력 : n grep -n unix grep.dat 2:unix+ 123 8
파일내용검색 - grep grep 명령사용예제 기본데이터 (grep.dat) UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 5) 불일치 : -v grep v unix grep.dat UNIX 12345 system admin Network 5 6) 일치하는줄수 : c grep -c 123 grep.dat 2 9
파일내용검색 - grep grep 명령사용예제 기본데이터 (grep.dat) UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 7) 단어검색 : -w grep w 123 grep.dat unix+ 123 8) 다중옵션사용 grep -ni unix grep.dat 1:UNIX 12345 2:unix+ 123 10
[ 실습하기 ] 파일내용검색 - grep 실습하기 데이터파일 : h.txt root other sh ROOT csh user1 USER2 12root ksh user1 KSH csh 1) grep sh h.txt 2) grep -w sh h.txt 3) grep -v root h.txt 4) grep I root h.txt 5) grep -ci sh h.txt 6) grep user1 /etc/passwd 7) grep root /etc/passwd 8) grep root /etc/group 9) grep other /etc/group 결과를예측해봅시다 11
[ 실습하기 ] 파일내용검색 - grep 실습하기 데이터파일 : h.txt root other sh ROOT csh user1 USER2 12root ksh user KSH csh 1) 1 만검색하기위한명령은? 2) 1 이들어있지않은라인을검색하기위한명령은? 3) User 를대소문자구분없이검색하기위한명령은? 4) sh 가들어간라인의수를구하는명령은? 5) 정확히 sh 만들어간라인의수를구하는명령은? 6) root 가들어간라인을찾아파일 h.out 에저장하는명령은? 12
파일내용검색 - grep 메타문자를사용한패턴표현 문자의미예결과 ^ 라인의시작 ^ 문자열 문자열로시작하는모든행 라인의끝 문자열 문자열로끝나는모든행. 한글자 a b? 없거나한글자 patter? 한글자대응, a 로시작해서 b 로끝나는 5 글자검색 patter 또는 patter 과한문자더있는문자열검색 (pattern, pattera 등 ) * 앞의항목이없거나여러번반복 ab* a 다음에 b 가없거나반복적으로나타나는라인검색 [ ] [^] 괄호안의글자중하나괄호안에있는글자가아닌글자 [Pp]attern Pattern 또는 pattern 이나타나는라인검색 [^a-m]att att 앞에 a 부터 m 까지나오지않는라인검색 13
[ 실습하기 ] 파일내용검색 - grep 실습하기 데이터파일 : grep.dat UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 1)grep ^root h.txt 2)grep sh h.txt 3)grep r..t h.txt 4)grep oo* h.txt 5)grep [0-9].* h.txt 6)grep [^c]sh h.txt 결과를예측해봅시다 14
파일내용검색 - egrep egrep [ 옵션 ] 패턴파일명들 메타 Grep 문자의기능을확장한명령 의미예결과 앞의글자가하나 확장된 + 패턴표현식 x y 이상나온다. x 나 y 중하나가나온다 ( ) 문자열그룹 [a-z]+ark apple orange (1 2)+ search(es ing)+ airpark, dark, bark, shark apple 또는 orange 1 또는 2 가하나이상 searches 또는 searching 15
파일내용검색 - egrep grep 명령사용예제 기본데이터 (grep.dat) UNIX 12345 unix+ 123 system admin Network 5 root other sh sjyoun prof ksh jongwon prof KSH ROOT other csh ck07555 student ksh CK08777 student bash 1) + egrep [78]+ gret.dat ck07555 student ksh CK08777 student bash 2) x y egrep csh bash grep.dat ROOT other csh CK08777 student bash 16
[ 실습하기 ] 파일내용검색 - grep 실습하기 데이터파일 : eh.txt root sh user05567 ROOT csh user05777 root ksh user05666 ROOT ksh user05888 결과를예측해봅시다 1)egrep root ROOT eh.txt 2)egrep (root ROOT) ksh eh.txt 3)egrep [56]+ eh.txt 4)egrep csh ksh eh.txt 5)egrep [a-z]+body /etc/ passswd 17
파일내용검색 - fgrep fgrep [ 옵션 ] 문자열파일명들 문자열검색 문자열내의모든문자를일반문자로해석 * : 문자 * 로인식하여검색 18
파일내용검색 - fgrep fgrep 명령사용예제 기본데이터 (fg.dat) # fgrep data file # JAVA 2244 aix admin * Unix admin * Network 25 1) * 검색 fgrep * fg.dat * Unix admin * Network 25 2) # 검색 fgrep # fg.dat # fgrep data file # 19
파일내용검색 - grep 과파이프 grep 명령은파이프와함께자주사용됨 ls -l grep rw- -rw-r--r-- 1 user1 -rw-r--r-- 1 user1 other 50 4월30일 12:00 g.dat other 50 4월30일 12:00 g.dat ps -ef grep user1 user1 6683 6680 0 17:28:15 pts/1 0:00 -ksh user1 6720 6683 0 17:50:53 pts/1 0:00 -ksh 20
grep 과제 (1) 다음 datafile 을이용하여 northwest NW Charles Main 3.0.98 3 34 western WE Sharon Gray 5.3.97 5 23 southwest SW Lewis Dalsase 2.7.8 2 18 southern SO Suan Chin 5.1.95 4 15 southeast SE Patrick Hemenway 4.0.7 4 17 eastern EA TB Savage 4.4.84 5 20 northeast NE AM Main Jt. 5.1.94 3 13 north NO Margot Weber 4.5.89 5 9 central CT Ann Stephens 5.7.94 5 13 NW가포함된모든줄찾기 1. n으로시작하는모든줄찾기 2. 4로끝나는모든줄찾기 3. TB Savage가포함된모든줄찾기 21
grep 과제 (2) 4. 숫자 5와소수점이포함된모든줄찾기 5..5가포함된모든줄찾기 6. w나 e로시작하는모든줄찾기 7. north로시작하는단어가포함된모든줄찾기 8. south로시작하는단어가포함되지않은모든줄찾기 9. 대소문자구별없이 so로시작하는모든줄의줄번호와찾은패턴보이기 10. east로시작하는단어가포함된줄수출력하기 11. 단어자체가 north인패턴이포함된모든줄찾기 (northwest는불포함 ) 22
GNU grep Gnu grep 은 G, -E, -F, -P 사용가능 grep G : 기본 grep grep E 또는 egrep grep F 또는 fgrep 재귀 grep (rgrep 또는 grep R) grep P (Perl 정규표현식지원 ) 23
Section 02 파일검색 - find 사용자가시스템내에존재하는특정파일을찾을때사용 검색범위를디렉토리단위로지정 특정파일의이름, 복수개의파일을지정하는패턴, 파일의속성을조합하여검색가능 표현식과일치하는파일에대해파일의절대경로를출력하거나특정명령실행가능 24
파일찾기 - find find 경로검색조건 [ 동작 ] 경로 파일을찾을디렉토리의절대, 또는상대경로 검색조건 파일을찾기위한검색기준 and, or 를이용하여조건결합가능 동작 파일의위치를찾은후수행할동작지정 기본동작은파일의절대경로를화면에출력 25
경로설정예 파일찾기 - find 경로표현 찾기시작위치 ~ 홈디렉토리에서찾기시작. 현재디렉토리에서찾기시작 /etc /etc 디렉토리에서찾기시작 ( 절대경로 ) / /(root) 디렉토리에서찾기시작 ( 전체파일시스템검색 ) unix unix 디렉토리에서찾기시작 ( 상대경로 ) 26
검색조건종류 파일찾기 - find 검색조건표현의미기능 -name filename 파일이름 특정파일명에일치하는파일검색 메타문자 (*,?) 사용도가능하나 안에있어야함 -type 파일종류특정파일종류에일치하는파일검색 (f,d) -mtime [+ -]n -atime [+ -]n 수정 ( 접근 ) 시간 수정 ( 접근 ) 시간이 +n 일보다오래되거나, -n 일보다짧거나정확히 n 일에일치하는파일검색 -user loginid 사용자 ID loginid 가소유한파일모든파일검색 -size [+ -]n 파일크기 +n 보다크거나, -n 보다작거나, 정확히크기가 n 인파일검색 (n=512bytes) -newer 기준시간기준시간보다이후에생성된파일검색 -perm 사용권한사용권한과일치하는파일검색 (8 진수 ) 27
파일찾기 - find 동작종류 동작 -exec 명령 {} \; -ok 명령 {} \; 정의 exec 옵션은 \; 으로끝남검색된파일은 {} 위치에적용됨 exec의확인모드형태사용자의확인을받아야명령을적용 (rm i) -print 화면에경로명을출력 ( 기본동작 ) -ls 긴목록형식으로검색결과를출력 검색조건의결합기호 -a : and ( 기본 ), -o : or,! : not 28
find 사용예제 -name 파일찾기 - find find ~ -name grep.dat /export/home/user1/unix/ch7/grep.dat -type (f : 파일, d : 디렉토리 ) find ~ -type d /export/home/user1 /export/home/user1/unix /export/home/user1/unix/ch2 29
find 사용예제 파일찾기 - find -mtime (+/-:24 시간기준 ) find. -mtime -1./eg.dat./eh.dat./fg.dat 시간기준 +1 1-1 72 48 24 현재 30
find 사용예제 -newer -user 파일찾기 - find find. -newer g.dat./h.dat./eg.dat./eh.dat find /export/home -user user1 find: 디렉토리 /export/home/user 를읽을수없음 : 사용권한이거부됨 /export/home/user1 /export/home/user1/.profile 31
find 사용예제 파일찾기 - find -size (+/- : 1=512byte 기준 ) find. -size 1./Practice./eg.dat./eh.dat -perm find. -perm 0755 -ls 202587 1 drwxr-xr-x 3 user1 2007 512 May 1 20:17. 217045 1 drwxr-xr-x 3 user1 2007 512 May 1 18:44./Practice 32
파일찾기 - find find 사용예제 검색조건조합 and ( 조건을생략하면자동으로 and 처리 ) find ~ -type d name Unix /export/home/user1/unix -o (or) find. -type d -o -perm 0755../Practice 33
find 사용예제 -! (not) 파일찾기 - find find.! -newer h.dat../practice./g.dat 34
파일찾기 - find find 사용예제 검색된파일처리 삭제 (-exec 기능 ) cp grep.dat find.dat find ~ -name find.dat -exec rm {} \; 출력결과저장 find.! -newer h.dat > f.out cat f.out../practice 35 -exec rm : 삭제명령을수행 (rm find.dat) { } : 검색된결과가오는자리 \; : find 명령의끝
[ 실습하기 ] 파일찾기 - find 실습하기 1) find /etc -type l more 2) find. mtime -1 name report.txt 3) find ~ -size +2 4) find. -ls 5) find /export/home user user1 6) find. -name *.dat -exec mv {} Practice \; 7)find. -type f 1) /etc 디렉토리에있는심볼릭링크파일찾기 2) 어제작업한 report.txt 파일찾기 3) 크기가 2 블록 (1KB) 보다큰파일찾기 4) 전체파일 5) User1 사용자의파일 6) *.dat 파일찾아 Practice 디렉토리로이동 7) 현재디렉토리에서파일찾기 36
Section 03 명령어찾기 - whereis whereis 명령 지정된경로에서명령검색 /usr/bin, /usr/5bin, /usr/games, /usr/hosts, /usr/include, /usr/local, /usr/etc, /usr/lib, /usr/share/man, /usr/src, /usr/ucb 사용법 whereis ls ls:/usr/bin/ls /usr/ucb/ls 37
명령어찾기 - which which 명령 PATH 환경변수에지정된경로에서명령을찾음 지정된경로에명령파일이없으면못찾았다는메시지출력 사용법 which ls ls: /usr/bin/ls 38