RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

이건 참 리눅스에 대단한 강점이라고 할 수 있는 부분이다.

놀랍지 아니 한가!


여기에서는 perl을 이용하였지만, sed 를 이용하여서도 가능하다.


그리고 혹시 모를상황을 대비하여 백업파일을 생성하고 싶다면

perl -pi -e 에서 perl -pi.bak -e 를 추가하면 자동적으로 "파일이름.bak"가 생성된다.


파일속 mms: 찾기
find . -type f -name "dunetCont.html" -exec grep "mms://vod.xxxx.co.kr" {} /dev/null \;


파일 속 IP 변경하기

find . -type f -name "dunetCont.html" -exec perl -pi -e 's/211.xx.xx.39/vod.xxxx.co.kr/g' {} \;
find . -type f -name "i_pg*.html" -exec perl -pi -e 's/211.xx.xx.39/vod.xxxx.co.kr/g' {} \;
find . -type f -name "[0,1][0-9].html" -exec perl -pi -e 's/211.xx.xx.39/vod.xxxx.co.kr/g' {} \;

압축
for i in $(find . -name 'Cont.html'); do tar -rvf Cont.tgz $i; done


K-IFRS(04.html , 09.html , 14.html , 19.html , 24.html)
for i in $(find *_10103* -name [0,1,2][4,9].html); do tar -rvf IFRS.tar $i; done
find . -type f -name [0,1,2][4,9].html -exec perl -pi -e 's/211.xx.xx.39/vod.xxxxt.co.kr/g' {} \;


수정하기 스크립트
find . -type f -name "dunetCont.html" -exec perl -pi -e 's/211.xx.xx.39/vod.xxxx.co.kr/g' {} \;
find . -type f -name [0,1,2][4,9].html -exec perl -pi -e 's/211.xx.xx.39/vod.xxxx.co.kr/g' {} \;

Trackback
Reply

출처 : 대전국제IT교육센터 정성재 강사

 

1. cp
(1) 설명: copy의 약어로 파일을 다른 이름으로 복사하거나 다른 디렉토리로 복사하는 명령. 도스의
          copy와 비슷하나 더 많은 기능을 한다.
(2) 사용법
   1) cp [option] file1 file2 => : file1을 file2로 복사한다.
   2) cp [option] files directory => file을 해당 directory에 복사한다.
(3) option
   -r : 서브디렉토리까지 복사한다. 디렉토리를 복사하고자 할 때 필요한 옵션이다.(-R)과 같다.
   -i : interactive(상호영향)의 약어, 복사할 대상 파일이 이미 존재할 때 덮어 쓸 것인지를 물어
       본다.
   -f : 같은 파일의 이름을 가지는 파일이 있는 경우 이 파일을 지운 후 복사한다. 즉 강제로 덮어
       쓴다.
   -b : 덮어쓰거나 지울 때 백업본의 파일을 만든다. 이 옵션을 사용하면 뒤에 ~가 붙는 파일이 생
       성된다.
   -s : 복사하는 대신에 심볼링링크를 만든다.
   -p : 소유권, 그룹, 허가권, 타임 스탬프 등 모든 정보를 복사한다. 이 옵션이 없을 경우 현재
       시간과 기본 허가권, 소유권, 그룹 정보로 파일을 복사한다.
   -v : 파일을 복사하기전에 각각 파일명을 표시한다.
   -d : cp 명령은 복사할 파일이 심볼릭링크파일인 경우에는 그 원본파일을 찾아 복사한다. 이 옵션
       은 심볼릭 파일인 경우 그 심볼릭 정보와 함께 링크파일 그대로 복사하고자 할 때 사용한다.
   -a : -dpR옵션과 같다. 특정 파일의 속성,링크 정보들을 그대로 유지하고 그 하위디렉토리까지 전
       부 복사할 때 사용한다.
(4) 사용예
   1) cp /etc/lilo.conf .
     => /etc/lilo.conf라는 파일을 현재 디렉토리 복사한다.
   2) cp /etc/lilo.conf info.conf
     => /etc/llio.conf라는 파일을 현재 디렉토리의 info.conf라는 파일로 복사한다.
   3) cp -r /etc/* tmp
     => /etc아래에 있는 모든 파일과 디렉토리들을 tmp라는 디렉토리에 복사한다.
   4) cp readme ./data
     => readme파일을 현재 디렉토리밑의 data디렉토리로 복사한다.
   5) cp -rp etc etc2
     => etc의 속성을 그대로 etc2라는 이름으로 복사본을 만든다.
   6) cp a.txt b.txt /tmp
     => 현재디렉토리의 a.txt b.txt를 /tmp라는 디렉토리안에 복사한다.
   7) cp -a /etc/skel/. /home/posein
     => /etc/skel 디렉토리안에 있는 모든 파일의 속성, 링크 정보 등을 그대로 유지하면서 /home/
       posein이라는 디렉토리로 복사한다.

2. mv
(1) 설명: move의 약어로 파일 또는 디렉토리의 이름을 바꾸거나 위치를 이동시키는 명령. 도스의
          'ren'명령이나 'move'명령과 비슷하다.
(2) 사용법
   1) mv [option] old_name new_name => old_name을 new_name으로 바꾼다.
   2) mv [option] file(s) directory => file(s)을 directory로 옮긴다.
(3) option
   -f : 옮겨질 파일이 이미 존재하더라도 묻지 않고 덮어 쓴다. ('f'는  force의 약어)
   -i : 옮겨질 파일이 이미 존재하는 파일이면 덮어 쓸 것인지 물어본다.
   -b : 파일을 지우기 전에 백업본을 만든다.
   -u : 옮겨질 디렉토리에 구버전의 파일이 있는 경우에만 옮긴다.
(4) 사용예
   1) mv readme.txt /home/posein/data => readme.txt라는 파일을 /home/posein/data디렉토리로
                                        옮기라는 명령이다.
   2) mv /home/posein/pds /home/posein/data => /home/posein/pds라는 디렉토리를 /home/posein/da
                                              ta 라는 디렉토리명으로 바꿔라.
   3) mv aaa.txt bbb.txt => aaa.txt 파일을 bbb.txt파일로 바꿔라.
(참고) mv명령은 파일과 디렉토리의 이름을 바꾸거나 이동시키는 명령이다. 만약 대상이 되는 파일이
      같은 파일시스템(파티션)내에 있을 경우에는 파일 자체 내용에 대한 재배치는 하지 않고 파일의
      위치만 갱신시킨다. 만약 대상이 다른 파일시스템에 있을 때는 대상 파일시스템을 복사한 후에
      원본을 삭제한다. 결국 파티션이 하나인 파일시스템의 관점에서 보면 파일명의 변경과 다른
      위치로의 이동은 거의 동일한 작업이다. 결국 파일명을 변경하는 명령이 따로 필요하지 않다.

3. locate
(1) 설명 : 찾고자 패턴과 맞는 파일이나 디렉토리를 경로와 함께 서브디렉토리등 모두 찾아낸다.
           대상을 데이터베이스화하여 사용하므로 속도는 빠르나 updatedb명령어나 cron작업을 이용
           하여 데이터베이스를 갱신해야 한다. 실제적으로 접근해서 볼 수 있는 것들만 찾아서
           보여주므로 find명령에 비해 강력하지는 않다.
(2) 데이터베이스 갱신 : 리눅스에서 기본적으로 매일매일 업데이트 한다.
   1) /etc/cron.daily/slocate.cron &
   2) updatedb &
(3) 사용예
    [posein@www]$locate shadow
     => shadow라는 패턴이 들어간 파일이나 디렉토리들을 찾아준다.
(4) 참고 : 요즘 리눅스는 한층 보안적으로 강화된 slocate 명령은 사용한다. locate라는 명령을
           내려도 심볼릭링크로 실제적으로는 slocate 명령이 실행되는 것이다. 결과적으로는 같은
           명령이다.

4. which
(1) 설명 : 명령어의 위치나 alias를 보여준다. 이것은 사용자가 현재 위치에서 명령을 실행 시켰을
           때 어떤 명령이 실행되는지를 알고 싶을때 사용할 수 있다. $PATH가 설정되어 있는 경로
           에서만 찾는다.
(2) 사용법
   which command
    => 실행되는 파일의 경로명을 보여준다.
(3) 사용예
   [posein@www share]$ which mv
   alias mv='mv -i'
           /bin/mv
(4) 참고 : alias에 대하여
   1) 설명: alias란 별명이라는 뜻으로 어떠한 명령을 지정해 놓으면 사용자가 그 명령을 실행 시켰
          을 때 alias로 지정해 놓은 명령이 대신 실행되게 된다. 이 기능은 대부분의 shell에서
          지원한다.
   2) alias의 이용
    ㄱ. 특정명령어 실행시에 기본으로 옵션을 사용하게 할 경우
    ㄴ. 나만의 새로운 명령어를 만드는 경우
   3) alias의 지정과 해제
    ㄱ. alias의 지정
       alias 명령어='새로운 명령'
    ㄴ. alias의 해제
       unalias 지정한_명령어
   4) 사용예
    ㄱ. alias ls='ls -alF'
         => ls명령만 실행시켜도 기본으로 -alF 옵션이 지정된다.
    ㄴ. alias lo='ls -alF'
         => lo라는 명령은 기본적으로는 존재하지 않는다. 사용자 특유의 명령어인 lo라는 명령을
           생성하게 된다. 이 경우에 'which lo' 하게 되면 나타난다.
    ㄷ. unalias lo
         => 위에서 지정한 lo라는 alias설정을 해제한다.
(5) 참고: $PATH에 대하여
   1) 설명: PATH는 사용자들이 실행파일을 입력했을 때 찾는 디렉토리의 목록을 저장하고 있는 환경
           변수이다. 쉽게 설명하면 posein이라는 사용자가 쉘 프롬프트에서 'ls'라는 명령을 입력
           하면 PATH라는 변수에 저장되어 있는 경로에서 찾아 그 경로에 ls라는 명령이 존재하면
           실행하게 되고 존재하지 않으면 'command not found'라는 에러메시지를 나타나게 된다.
   2) 변수값 확인
    ㄱ. 일반사용자인 경우
       [posein@www posein]$ echo $PATH
       /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/posein/bin
    ㄴ. root사용자인 경우
       [root@www root]# echo $PATH
       /usr/kerberos/sbin:/usr/kerberos/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:-생략-
         => 일반사용자보다 시스템관리명령어들이 위치하는 /sbin 디렉토리가 더 존재함을 알 수
          있다.
   3) 참고
    ㄱ. 설명: 몇몇 명령어는 실행권한이 없다기 보다는 이 PATH로 등록되지 않아서 실행안되는 경우
             가 있다.
    ㄴ. 사용예
      a. [posein@www posein]$ ifconfig
         -bash: ifconfig: command not found
           => ifconfig라는 명령어만 내리면 실행되지 않는다.
      b. [posein@www posein]$ /sbin/ifconfig
         eth0      Link encap:Ethernet  HWaddr 00:C1:58:23:35:19
                   inet addr:192.168.0.120   Bcast:203.247.40.255  Mask:255.255.255.0
                   UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                   RX packets:92128289 errors:312 dropped:0 overruns:0 frame:0
                   TX packets:3385289 errors:0 dropped:0 overruns:0 carrier:0
                   collisions:1604382 txqueuelen:100
                   RX bytes:3334187353 (3179.7 Mb)  TX bytes:3091351999 (2948.1 Mb)
                   Interrupt:5 Base address:0xf000
           => 절대경로와 함께 입력하면 실행결과가 나옴을 알 수 있다.

5. whereis
(1) 설명 : 찾고자 하는 명령을 $PATH로 지정된 경로에서 찾아서 소스, 실행 파일, 매뉴얼 페이지
           등이 어느 위치에 있는지를 알려준다.
(2) 사용법
   whereis [option] filename
(3) option
   -b : (실행) 파일만 찾는다.
   -m : 매뉴얼 페이지만 찾는다.
   -s : 소스만 찾는다.
(4) 사용예
   [posein@www share]$ whereis mv
   mv: /bin/mv /usr/share/man/man1/mv.1.gz
     => 특별한 옵션이 없으면 소스, 실행파일, 매뉴얼 페이지 순으로 나타난다.

6. find
(1) 설명: 현재디렉토리부터 하위디렉토리까지 주어진 여러조건을 가지고 파일을 찾고, 그 경로를
          출력한다. locate보다 강력한 찾기 기능을 지원하지만 root에서 접근 권한을 제한한 파일
          이나 디렉토리에 관해서는 "허가 거부됨"이라는 메시지가 뜨고 찾지를 못한다.
(2) 사용법
    find [path] options expression
    =>path이하의 모든 디렉토리에서 파일을 찾는다. path가 없으면 현재디렉토리가 기준이다.
(3) option
   -name       : 이름을 기준어로 하여 찾는다.
   -user       : 해당 user의 파일이나 디렉토리를 찾는다.
   -group      : 해당 group의 소유인 파일이나 디렉토리를 찾는다.
   -perm       : 선택 퍼미션인 것을 찾는다.
    예) -perm 755   => 해당퍼미션값이 755인것을 찾는다.
        -perm -6000 => set-uid와 set-gid가 동시에 같는 퍼미션을 찾는다.
        -perm +6000 => set-uid와 set-gid중 둘 중 하나이상의 퍼미션값을 가진 것을 찾는다.
   -type       : 파일의 유형(d,f,l)에 따라 찾는다.
    *값
      d : 디렉토리를 찾는다.
      f : 일반파일을 찾는다.
      l : 링크된 것을 찾는다.
      b : 블록 특수 파일을 찾는다.
      c : 문자 특수 파일을 찾는다.
      p : 파이프인 특수파일을 찾는다.
      s : 소켓파일을 찾는다.

   -atime n : n일 이전에 액세스한 파일을 찾는다. +n은 n일 이전에 액세스한 파일을 찾는다는 의미
             이고 -n은 n일 내에 액세스한 파일을 찾는다는 뜻이다.
   -ctime n : 파일이 변경(change)된 날짜로 찾는다. 나머지는 atime과 같다.
   -mtime n : 파일이 수정(modify)된 날짜로 찾는다. 실제적으로는 ctime과 mtime은 거의 같다.

   -exec : 찾아진 파일등과 연계하여 어떠한 명령을 내릴 수 있는 옵션이다. 이 옵션을 사용하면 \;
          로 끝나야 한다.
   -ok : 확인메시지를 출력하는 것을 제외하고는 -exec와 같다.
   -print      : 화면으로 출력을 받기 위해서는 맨 뒤에 꼭 써야 하는 옵션이지만, 요즘 리눅스에
                서는 생략가능하다.
    2>/dev/null : 맨 뒤에 이 옵션을 사용하면 접근 권한이 없는 파일이나 디렉토리에 접근시
                 나오는 리스트는 화면에 출력하지 않는다.
   -ls : 맨 뒤에 이 옵션을 사용하면 상세출력하는 'ls -l'과 같은 역할을 한다.
   -size n : n 블록 길이의 파일을 찾는다. +n은 n블록보다 큰 파일을 의미하며, -n은 n블록보다
            작은 파일을 의미한다. nc란 n문자 길이의 파일을 의미한다. 즉 c는 character를 의미
            하고 1문자는 1바이트이므로 보통 바이트단위로 인식하여 사용한다.
   -inum n : inode번호가 n인 파일을 찾는다.
(4) 사용예
   1) find -name exam.txt =>exam.txt라는 파일이나 디렉토리를 찾는다.
   2) find -name '*.c' => *.c로 끝나는 파일이나 디렉토리를 찾는다.
   3) find -user posein => posein이라는 사용자의 파일이나 디렉토리를 찾는다.
   4) find -perm 600 => 권한이 600인 파일을 찾는다.
   5) find -type l => 심볼릭 링크인 파일을 찾는다.
   6) find . -type d => 현재 디렉토리에 있는 모든 하위 디렉토리를 찾는다.
   7) find . -type f -name "*.txt" => 현재 디렉토리에서 '*.txt'로 끝나는 파일들을 찾는다.
   8) find / -type f -perm +6000 -ls => 루트 디렉토리에서부터 퍼미션이 6000인 파일들을 찾아 상
                                       세출력(-ls)한다. 퍼미션이 6000을 주면 setuid와 setgid가
                                       걸려있는 모든 파일을 찾는다.
   9) find / -nouser -o -nogroup => 소유자나 소유그룹이 없는 파일들을 찾는다. -o는 or(또는)의
                                  역할을 한다.
   10) find / -user level1 -group level0 -print 2>/dev/null
      => 루트 디렉토리(/)에서 소유자는 level1이고 그룹은 level0인 파일을 찾아서 화면으로
        프린트하되, 접근 권한이 없는 파일등 오류가 있는 것들은 화면에 출력하지 않는다.
   11) find . -name '*.txt' -exec rm {} \;
      => 현재 디렉토리에서 *.txt로 된 파일들을 찾아 삭제한다.
   12) find /home -name .rhosts => /home디렉토리에서 .rhosts라는 파일을 찾는다.
   13) find / -name .rhosts -ls -o -name .forward -ls
      => .rhosts 또는 .forward라는 파일을 찾아 정보를 상세히 출력한다.
   14) find / -ctime -2 -ctime +1 -ls
      => 이틀전에서 하루 이후에 수정된 파일을 찾는다.
   15) find -size +10000c -size -32000c
      => 10000바이트보다 크지만 32000바이트보다 작은 파일을 찾는다.
   16) find -inum 10004 -exec rm {} \;
      => inode번호가 10004인 파일을 찾아 지운다. 간혹 지워지지 않는 파일들이 생길 수 있다. 이
        때는 inode번호를 알고 find와 연계해서 지울 수도 있다.
   17) [posein@www posein]$ find -name test.txt -ok chmod 755 {} \;
       < chmod ... ./test.txt > ? y


7. file
(1) 설명: 파일의 종류를 알아보는 명령어. 도스에서는 보통 파일의 종류를 확장자로 구분하지만
          유닉스에서는 파일 이름에 아무 제한이 없으므로 이 명령어를 사용하여 알 수 있다.
(2) 사용법
    file file(s)
(3) 사용예
    file *
(4) 참고: 관련파일
    file은 파일에 대한 정보를 얻기위해 /usr/share/magic 이라는 파일을 참조한다.

8. touch
(1) 설명: 파일의 크기가 0인 빈 파일을 생성하는 명령어로 파일의 최종 접근시간을 바꿀 수 있는
          명령이다.
(2) 사용법
    touch [option] 파일명
(3) option
   -d : 접근 시간을 변경한다.
   -m : 수정 시간을 변경한다.
   -t 타임스탬프 : 현재 시간 대신 [[CC]YY]MMDDhhmm[.ss]형식으로 지정된 타임스탬프를 이용한다.
                 예를 들어, 2001년 1월 12일 오후6시45분은 200101121845로 나타낸다. 리눅스배포
                 판에 따라 타임스탬프형식이 MMDDhhmm[[CC]YY][.ss]로 다를수도 있으니 man 명령으
                 로 확인해야 한다.
(4) 사용예
   1) [posein@www posein]$ touch a.txt
       => 현재 디렉토리에 a.txt라는 파일이 존재하면 파일의 접근시간을 바꾸고 파일이 없을 경우
         에는 a.txt라는 파일의 크기가 0인 빈파일을 생성한다.
         생성파일이다.
   2) [root@int03 root]# touch -t 04011330 /etc/passwd
      [root@int03 root]# ls -l /etc/passwd
      -rw-r--r--    1 root     root         2655  4월  1 13:30 /etc/passwd
        => /etc/passwd 파일의 접근시간을 바꾼다.
(5) 쓰임 : 주로 설정파일을 만들어야 할때 사용되는데 없으면 안되고, 내용을 적을 것이 없는
          경우나 현재 디렉토리에 쓰기가 가능한지를 알아보기 위한 목적으로 쓰인다.

9. clear
(1) 설명: 화면을 지워서 첫줄에 프롬프트가 나타나도록 한다.
(2) 사용법
   clear

(참고)
리눅스를 좀 더 편리하게 사용하기를 원한다면 mc라고 타이프 해보자.사용법은 노턴커맨드나 Mdir
과 비슷하다. 모르는 명령어가 있다면 'man 명령어'나 '명령어 --help'하면 명령어에 대한 설명이
나올 것이다. 단지 흠이라면 대부분 영어로 나온다.

Trackback
Reply

find ./* -name "파일명" -type f -exec egrep -i "파일 속 단어" {} /dev/null \;

Trackback
Reply
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
OpenSource (1)
Tips! (1)
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30