[Info]Tags categorized posts and contents patterns..

[AJAX] Ajax Code E xamples.. [Book] About the book.. [CSS] CSS Code E xamples.. [DB] Sql Code E xamples.. [DEV] All development stor...

2016년 4월 7일 목요일

[Linux]find 활용한 명령어들..

뜻하지 않게 검색해서 파일 권한 바꾸기 포스팅과 chmod 권한 정의 포스팅에 이은 약간 3탄격의 포스팅이 되었다.. 이번에는 find 활용한 명령어들의 예를 조금 더 검색해봤다..

내가 처음 소개한 find 명령어[find . -exec chmod 777 {} \;]는 내가 주로 쓰는 것을 소개하는 개념이었다.. 아래 내용은 김영성 님의 블로그를 참고했다.. 다만, 내 스타일대로 내 입맛대로 편집을 좀 했다..

난 처음 조건 뒤에 붙는 것이 -exec 만 있는줄 알았다.. 이거야 머 모르는게 죄다..ㅠ 그런데 두 개가 더 있었다.. 찾아보면 물론 다른게 더 있을지도 모르지만, 과거 언급한것처럼 리눅스 전문가도 아니고, 내가 쓰지 않고 있어서 그 이상의 언급을 하기에는 좀 무리가 있다.. 그럼 알게 된 부분에 대해서 확인해보자..


  • -exec 명령 : 주어진 명령을 수행한다.. 가장 흔히 쓰이는 행동들 중 하나이며, 끝에 \;를 붙인다..
  • -ok 명령 : -exec와 같지만, 각 파일마다 명령을 수행하기 전에 사용자에게 확인을 받는다.. 이것도 끝에 \;를 붙인다..
  • -print : 파일 이름을 출력한다..


find 조건 뒤에 붙는 명령이다.. 다른 사람도 그런지 모르겠지만, 난 솔직히 설명을 길게 하는 것보단 간단한 예제를 보고 이해하거나 직접 실행해서 어떠한 결과가 나오는지를 통해서 이해를 많이 하는 편이다.. 그래서 간단한 설명과 예제를 올린다..


  • root 디렉토리에서 *.jpg 를 찾아 현재 디렉토리에 복사하기..

     find . -type f -name *.jpg -exec cp {} . \;


  • 현재 디렉토리에서 10MB 이상의 파일을 찾아서 출력하기..

     find . -type f -size +10000 -exec ls -alh {} \;


  • 현재 디렉토리에서 하루 이상 경과한 파일을 imsi 디렉토리로 이동 시키기..

     find . -atime +1 -type f -exec mv {} imsi\;


  • "-F"라는 파일을 찾아 삭제하기..

     find . -name "-F" -exec rm {} \;


  • 현재 디렉토리에서 대소문자에 상관없이 "찾는 문자열" 을 포함한 라인 출력하기..

     find . -exec grep -i "찾는 문자열" {} \;


  • 현재 디렉토리에서 *.Z 화일을 제외한 나머지 파일들을 *.Z으로 압축하기..

     find . \! -name "*.Z" -exec compress -f {} \;


  • 현재 디렉토리에서 *.Z 파일을 제외하고, 또한 "제외할 파일명" 이외 파일들을 터미널로 출력과 동시에 /tmp/list 에 추가하기..

     find . -type f \! -name "*.Z" \! -name
     "제외할 파일명" -print | tee -a /tmp/list


  • 현재 디렉토리에서 이름이 *.ini인 파일을 출력하기..

     find . -name "*.ini"


  • 현재 디렉토리 이하 서브 디렉토리를 포함한 모든 파일들에 대해 퍼미션 755로 변경하기..

     find . -exec chmod 755 {} \;
     find . -exec chmod -R 755 ./ ;


  • 현재 디렉토리에서 user1 소유자로 표시된 파일들을 모두 user2의 사용자 권한으로 변경하기..

     find . -user xuser1 -exec chown -R user2 {} \;
     find . -user xuser1 -exec chown -R user2 ./


  • 현재 디렉토리에서 "찾을 xxx넘"을 대소문자 구별없이 검색하여 출력하기..

     find . -exec grep -i "찾을 xxx넘" {} \;
     find . -grep -i "찾을 xxx넘" {} \;
     find . -ls -exec grep "찾을 xxx넘" {} \;


  • 6일 이전의 파일들을 찾아 출력하기..

     find . -atime +6


  • 30일 이전 업데이트 된 파일들의 라인수를 알아보기..

     find . -atime +30 -exec ls \; | wc -l


  • /raid 디렉토리에서 "디렉토리명"을 가진 파일이 존재하면, / 복사할 경로 로 복사 하기..

     find /raid -type d -name "디렉토리명"
     -ok cp /복사할경로 {} \;


  • "찾을 파일" 검색도중 에러 및 경고 메시지는 표시하지 않게 하기..

     find . -name "찾을 파일" -print 2> /dev/null


  • 대소문자 구분없이 "찾는글"을 포함된 파일에 대한 내용을 출력하지 않고, "찾는넘.list" 파일에 저장 및 more를 통해 검토하기..

     find . -print -exec grep -i "찾는글" {} \; > 찾는넘.list
     find . -print -exec grep -i xeroxrel {} \; | more


  • 파일 권한이 700인 파일을 찾기..

     find . -perm 700 -print


  • 파일 권한이 400인 파일과 200인 파일을 기.. [주의 : "\"의 앞뒤에 space 가 반드시 있어야 한다..]

     find . \ ( -perm 400 -o -perm 200 ) -print


  • 파일의 블럭 크기가 1024 이상인 파일을 찾기..

     find . -size +1024 -print 


  • 파일 이름이 core이고, 크기가 2048블럭 이상인 파일을 찾기..

     find . -name core -size +2048 -print 


  • 30일 이전에 액세스되었던 파일을 찾기..

     find . -atime +30 -print 


  • 7일 이내에 수정된 적이 있는 파일을 찾기..

     find . -mtime -7 -print 


  • 30일 이전에 액세스된 파일 중 *.c를 찾아 ls -l 하기..

     find . -name \*.c -atime +30 -exec ls -l {} \; 


  • 현재 디렉토리에서 이름이 core인 파일을 찾아 지우기.. [지우기 전에 정말 지울지 물어본다..]

     find . -name core -exec rm -i {} \; 


  • 마운트된 디렉토리들은 검색하지 말라고 알려주는 효과주기..

     find / -mount -name test -print


  • 현재 위치의 df.sh 파일보다 최근에 만들어진 파일형식을 출력하기..

     find -newer df.sh -type f -print


  • 현재 위치에서 df.sh 파일보다 최근에 만들어진 모든 것을 출력하기..

     find -newer df.sh -print


  • 현재 위치에서 set.sh 파일보다 최근에 만들어진 모든 파일들은 모두 출력하기..

     find . -newer set.sh -type f -exec ls -l {} \;

이상이다.. 내가 검색을 하고, 내용을 옮겨오면서도 느낀것이 이 명령어들을 리눅스 전문가들은 어지간한건 외워서 할 것 아닌가.. 흐미.. 그나마 내 분야가 편하지 남들의 분야는 정말 어려운듯하다.. 또한, 내가 과연 위 명령어들 또는 추가적으로 검색을 해서 명령어를 얼마나 사용하려나.. ㅎㅎㅎ.. 만약 검색하다가 올리지 않은 명령어를 사용하게 된다면, 또 포스팅 하리라..


댓글 없음:

댓글 쓰기