YesYo.com MintState Forums
뒤로    YesYo.com MintState BBS > Tech > Linux
검색
멤버이름    오토
비밀번호 
 

find + xargs + ls 명령어 몇가지 활용

페이지 정보

작성자 MintState 댓글 0건 조회 18,636회 작성일 08-11-20 12:31

본문

find + xargs + ls 명령어 몇가지 활용

원본 : http://www.linuxchannel.net/docs/find-xargs-ls.txt

작성자 : 김칠봉 <san2 at linuxchannel.net>
작성일 : 2001.03.12

목차
1. 가장 일반적인 find 명령어

2. find 명령어 일반적인 옵션
  2-1. 사용법 개요
  2-2. 일반적으로 표현식 옵션 구분
  3-3. 자주 사용되는 표현식 옵션
  3-4. path(find 명령어 다음의 path)
  3-5. 표현식-연산자

3. 예제
  3-1. 다른 명령어와 결합형태(ls,xargs)
  3-2. 퍼미션 관련 예제
  3-3. 유저와 관련된 예제
  3-4. 팁
- 최근 하루(1) 동안(-)에 변경(change)된 파일을 찾을려면(-ctime)?
- 오래된 파일을 찾을려면(30일 이상 수정(modify))되지 않은)?
- 최근 30일(30) 안에(-) 접근(access)하지 않은 파일과 디렉토리를 리스트
로 만들려면(-atime)?
- 자신의 홈디렉토리에서 만 검색하려면?
- 서브 디렉토리로 내려가지 않고 현재 디렉토리에서만 검색하려면?
- 특정 유저(foobar) 소유의 파일을 찾을려면?
- 퍼미션이 777인 파일을 찾을려면 ?
- others에게 쓰기 권한이 있는 파일을 찾을려면?
- others에게 쓰기 권한이 있는 파일을 찾아 쓰기 권한을 없애려면?
- 유저이름과 그룹이름이 없는 파일을 찾을려면?
- 빈 파일을 찾을려면?
- 파일크기가 100M 이상된 파일을 찾을려면?
- *.bak 파일을 찾아 지울려면?
- *.bak 파일을 찾아 특정 디렉토리로 옮길려면?
- 디렉토리 만 찾을려면?
- root권한으로 실행되는 파일을 찾을려면?
- 다른 파일시스템을 검색하지 않을려면?
- 파일이름에 공백이 들어간 파일을 찾을려면?
- 숨겨진(hidden) 파일을 찾을려면?
- 같은 이름을 가진 디렉토리를 찾을려면?
- 잘못된 링크를 찾을려면?

4. find 명령어에 대해서 좀더 알아보려면?

------------------------------------------------------------

1. 가장 일반적인 find 명령어



제일 먼저(?) 배우는 형식이 아닌가 쉽군요.


2. find 명령어 일반적인 옵션

2-1. 사용법 개요

find 명령어 사용법 보기 :



간단하게 몇가지만 알아보죠...
(자세한 사용설명은 꼭 man 페이지를 읽어보세요....한글은 없군요..T.T)


2-2. 일반적으로 표현식 옵션 구분

  -a'xxxx'
                'xxxx'에 대한 Access(접근)
  -c'xxxx'
                'xxxx'에 대한 Changes(변경), 마지막으로 Access한 경우 변경됨
  -m'xxxx'
                'xxxx'에 대한 Modify(수정), 파일내용 자체 수정한 경우  -i'xxxx'
                'xxxx'(inum 제외)에 대한 Insensitive(대소문자 구분없이)

3-3. 자주 사용되는 표현식 옵션

  N
                정확하게 N과 일치
  +N
                N 보다 큰 경우
  -N
                N 보다 작은 경우
  -name PATTERN
                PATTERN에 일치하는 파일 찾기, 와일드카드 문자 사용가능
  -iname PATTERN
                PATTERN에 일치하지 않은(insensitive) 파일 찾기
  -perm [+-]mode
                PERMission('mode')에 해당되는 파일 찾기, ls와 결합 가능
  -type [bcdpfls]
                b(블럭파일), c(특정 문자), d(디렉토리), p(파이프),
                f(정규표현 일반파일), l(링크), s(소켓) 유형의 파일 찾기
  -size N[bckw]
                파일 크기가 N 인 파일 찾기
                b(블럭-기본값), c(bytes), k(kbytes), w(2바이트 단어)
  -user NAME
                NAME은 유저이름이거나 UID
  -atime N
                N*24 시간 동안에 Access 한 파일
  -ctime N
                N*24 시간 동안에 Changes 한 파일(내용수정이 아니고 읽기모드도 Changes됨)
  -mtime N
                N*24 시간 동안에 Modify 한 파일
  -empty
                파일이 비어 있고(0 bytes), 정규식 파일이거나 디렉토리
  -newer FILE
                FILE 보다 최근에 갱신된 파일
  -path PATTERN
                path가 PATTERN과 일치하는 path에 대해서 검색
  -regex PATTERN
                파일이름이 PATTERN에 일치하는 정규식에 대해서 검색
  -inum N
                inode N을 갖는 파일
  -nouser,-nogroup
                USER나 GROUP에 이름이 없는 파일 검색(UID,GID만 있는 파일)
  -exec COMMAND
                검색된 파일을 찾으면 COMMAND 명령을 실행한다.
                COMMAND 인자(검색된 파일)는 {}으로 사용하며,
                이때 COMMAND 끝은 ;(;이 아님)을 사용해야 한다. 즉 명령구분
                문자인 ';'을 탈출()시켜줘야 한다.
  -ok COMMAND
                -exec COMMAND와 같지만 COMMAND를 실행하기 전에 확인을 요청한다.

3-4. path(find 명령어 다음의 path)
  .
                현재 디렉토리(기본값이므로 생략해도 됨)
  `pwd`
                현재 디렉토리와 결합(?) `은 ~문자가 있는 자판
  $(pwd)
                위의 `pwd`와 같거나 비슷함
  /
                최상위 루트 디렉토리에서 하위 모든 디렉토리
  /home
                특정 /home 디렉토리에서 하위 모든 디렉토리
  /{usr,home/{aaa,san2},var}
                /usr, /usr/home/aaa /usr/home/san2 /var

3-5. 표현식-연산자

  ( 표현식 )
                '표현식'을 우선적으로 먼저 수행
                (와 )앞에 를 넣어야 하며, '표현식'과 공백을 각각 둔다.
                ( A + B ) * ( C + D ) 와 같이 (, )안을 우선적으로 수행
  ! 표현식 , -not 표현식
                '표현식'을 부정
  표현식1 -a 표현식2, 표현식1 -and 표현식2
                표현식1과 표현식2의 AND 연산
  표현식1 -o 표현식2, 표현식1 -or 표현식2
                표현식1과 표현식2의 OR 연산


3. 예제

3-1. 다른 명령어와 결합 형태(ls,xargs)

찾는 것 그 차체 만으로 만족(?) 할 수 도 있지만 그 결과에 대해서
어떤 행동(Actions)을 취할 필요가 있습니다.



즉, find 결과에 대해서,

형태1은 -exec를 사용하여 그 인자를 {}로 사용하고,

형태2는 xargs 명령어로 find에서 넘어온 결과(표준출력)에 대해서 COMMAND를 실행하고,

형태3은 오른쪽의 find 결과물에 대해서 ls 명령어를 실행합니다.
간혹 '/bin/ls Argument list too long'이라는 에러를 낸 경우도 있습니다.
이는 검색조건에 너무 많은 와일드카드 문자로 찾을 경우에 그렇습니다.
이를 테면 /*/*/*.*/.*,

`은 ~문자가 있는 자판(역인용부호).

ls -l 명령어를 사용할 경우, 찾는 결과가 없다면 모두 출력됩니다. (ls -l와 같기 때문에)
ls 명령어와 마찬가지로 다른 명령어(chmod, chmod)를 결합하여 사용할 경우 그 찾는 결과가 없다면 명령어에 대한 에러를 내겠죠.
(chmod 'null')과 같은 예..........



위의 2개의 명령어 대해서 직접 테스트 해보세요...

전자의 경우, 아마 아무것도 출력되지 않을 겁니다.



위와 같이 해야 맞겠죠...(우선순위)

후자의 경우도 마찬가지로 다음과 같이 우선순위를 정해놓아야 겠지요.. 아마 원하는 출력이 이 경우일 것 같군요.




3-2. 퍼미션 관련 예제

othesrs에 쓰기(w:2) 권한이 있는 모든(-기호를 붙임) 파일 리스트를 찾을려면?



여기에서 2는 퍼미션이 -------w- 와 일치하는 파일이며 -의 의미는 rwx-중 하나.

왜 2인가요?
만약 퍼미션이 755 이라면,



따라서 others의 권한은 8진수로 5(r+x)이다.

그렇다면, others가 쓰기(w:2) 권한은 당연히 -------w-

그룹이나 others에게 쓰기 권한이 있는 파일일 경우

-perm -20 -o -perm -2

그룹과 others에게 모두 쓰기 권한이 있는 파일일 경우

-perm -22

[others에게 w 권한이 있는 파일에 w 권한 없애기]

방법1)
1. others에게 w 권한이 있는 파일 리스트 출력


(만약 매치되는 리스트가 없다면 전부 출력함)

2. others에게 w 권한을 없애기


(만약 매치되는 리스트가 없다면 chmod에 에러를 냄)

방법2) 방법1)의 과정을 한꺼번에 할 경우



이 경우는 퍼미션이 조정된 결과를 출력함.


3-3. 유저와 관련된 예제

UID와 GID에 대한 유저가 없는 파일을 root.root로 바꾸어 보죠.

1) 먼저 리스트를 출력해 보자.(확인해야하니깐)



2) 확인했으면, chown root.root 명령을 내리자.


  (chown root.root 의 결과를 ls -l)


3-4. 유용한 팁

*주의) ***********************************************
  -a'xxxx'
                'xxxx'에 대한 Access(접근), 읽기
  -c'xxxx'
                'xxxx'에 대한 Changes(변경), 마지막으로 Access한 경우에도 변경됨
  -m'xxxx'
                'xxxx'에 대한 Modify(수정), 파일내용 자체 수정한 경우
*****************************************************

- 최근 하루(1) 동안(-)에 변경(change)된 파일을 찾을려면(-ctime)?



- 오래된 파일을 찾을려면(30일 이상 수정(modify))되지 않은)?



- 최근 30일(30) 안에(-) 접근(access)하지 않은 파일과 디렉토리를 리스트로 만들려면(-atime)?



- 자신의 홈디렉토리에서 만 검색하려면?



- 서브 디렉토리로 내려가지 않고 현재 디렉토리에서만 검색하려면?



- 특정 유저(foobar) 소유의 파일을 찾을려면?



- 퍼미션이 777인 파일을 찾을려면 ?



- others에게 쓰기 권한이 있는 파일을 찾을려면?



- others에게 쓰기 권한이 있는 파일을 찾아 쓰기 권한을 없애려면?



- 유저이름과 그룹이름이 없는 파일을 찾을려면?



- 빈 파일을 찾을려면?



- 파일크기가 100M 이상된 파일을 찾을려면?



- *.bak 파일을 찾아 지울려면?



- *.bak 파일을 찾아 특정 디렉토리로 옮길려면?



- 디렉토리 만 찾을려면?



- root권한으로 실행되는 파일을 찾을려면?



- 다른 파일시스템을 검색하지 않을려면?



- 파일이름에 공백이 들어간 파일을 찾을려면?



- 숨겨진(hidden) 파일을 찾을려면?



- 같은 이름을 가진 디렉토리를 찾을려면?


*주)'O'Reilly Unix Power Tools' 참고

- 잘못된 링크를 찾을려면?


*주)'O'Reilly Unix Power Tools' 참고

댓글목록

등록된 댓글이 없습니다.

Total 360건 3 페이지
게시물 검색
모바일 버전으로 보기
CopyRight ©2004 - 2024, YesYo.com MintState. ™