메뉴 건너뛰기

Korea Oracle User Group

OS

테스트 환경 : HP-UX 11.31

 

 절대 경로를 포함 한 스크립트를 생성 해보겠습니다.

 

-  파일이 있는 디렉토리 절대 경로 구하기

   

$ ls -dl /vol/vg_*    # -d 경로 안의 내용을 표시 하지 않고, 그 경로를 보여 줍니다.
drwxr-xr-x   2 oracle     dba           8192 Oct  9 09:08 /vol/vg_ora1
drwxr-xr-x   2 oracle     dba           8192 Oct  9 09:09 /vol/vg_ora10
drwxr-xr-x   2 oracle     dba           8192 Oct  9 09:09 /vol/vg_ora11
drwxr-xr-x   2 oracle     dba           8192 Oct  9 09:09 /vol/vg_ora12
drwxr-xr-x   2 oracle     dba           8192 Oct  9 09:09 /vol/vg_ora13
drwxr-xr-x   2 oracle     dba           8192 Oct  9 09:09 /vol/vg_ora14
drwxr-xr-x   2 oracle     dba           8192 Oct  9 09:09 /vol/vg_ora15
drwxr-xr-x   2 oracle     dba           8192 Oct  9 09:09 /vol/vg_ora16
drwxr-xr-x   2 oracle     dba           8192 Oct  9 09:09 /vol/vg_ora17
drwxr-xr-x   2 oracle     dba           8192 Oct  9 09:09 /vol/vg_ora18
drwxr-xr-x   2 oracle     dba           8192 Oct  9 09:09 /vol/vg_ora19
drwxr-xr-x   2 oracle     dba           8192 Oct  9 09:10 /vol/vg_ora2

 

-  현재 예시에서는 디렉토리만 조회 가 되었는데 만약 파일도 조회가 된다면 걸러낼 필요가 있습니다.

 

$ ls -ld /db_oracle/*
drwxr-xr-x   8 oracle     dba           1024 Dec 19  2009 /db_oracle/database
-rwxr-xr-x   1 root       users      1351928 Oct  9 10:57 /db_oracle/dbv
drwxr-xr-x   2 root       root            96 Oct  9 08:29 /db_oracle/lost+found
drwxr-xr-x   5 oracle     dba          65536 Oct 10 15:10 /db_oracle/oracle
-rw-r--r--   1 oracle     dba         160930 Oct 10 14:57 /db_oracle/result.txt
-rw-r--r--   1 root       sys         962560 Oct  9 11:52 /db_oracle/unzip-6.0-ia64-11.31.depot
-rwxrwxrwx   1 cjcable    users       110955 Oct  9 12:08 /db_oracle/unzip_hpx32
$ ls -ld /db_oracle/*|grep ^d    # grep 으로 d 로 시작 하는 라인만 걸러 냅니다. ^ 는 라인의 시작을 의미 합니다.
drwxr-xr-x   8 oracle     dba           1024 Dec 19  2009 /db_oracle/database
drwxr-xr-x   2 root       root            96 Oct  9 08:29 /db_oracle/lost+found
drwxr-xr-x   5 oracle     dba          65536 Oct 10 15:10 /db_oracle/oracle
$ 

 

 - 해당 경로의 위치만 걸러 냅니다.

 

$ ls -dl /vol/vg_*|grep ^d|awk '{print $9}' # awk '{print $9}' 는 결과에서 9번째 결과를 출력 합니다.
/vol/vg_ora1
/vol/vg_ora10
/vol/vg_ora11
/vol/vg_ora12
/vol/vg_ora13
/vol/vg_ora14
/vol/vg_ora15
/vol/vg_ora16
/vol/vg_ora17
/vol/vg_ora18
/vol/vg_ora19
/vol/vg_ora2

 

 - 이렇게 가져온 리스트로 shell 을 만들겠습니다.

 

ls -dl /vol/vg_*|grep ^d|awk '{print $9}'|while read line   # while 을 이용 앞의 ls 에서 가져온 데이터를 한라인씩 읽음
do      
    ls -l $line|grep ^c|awk '{print $10}'|while read result  # $line 에서 디렉토리 정보를 이용 하위 파일을 조회
      do
         echo "dbv file=$line/$result log=/db_oracle/oracle/$result.log"  # $line 의 절대경로 , $result 파일 이용 명령어 출력
      done
done > result.txt  # 출력 결과를 파일에 담는다.

# result.txt 파일 안의 내용
dbv file=/vol/vg_ora9/rdbf_ora9_5_012 log=/db_oracle/oracle/rdbf_ora9_5_012.log
dbv file=/vol/vg_ora9/rdbf_ora9_5_013 log=/db_oracle/oracle/rdbf_ora9_5_013.log
dbv file=/vol/vg_ora9/rdbf_ora9_5_014 log=/db_oracle/oracle/rdbf_ora9_5_014.log
dbv file=/vol/vg_ora9/rdbf_ora9_5_015 log=/db_oracle/oracle/rdbf_ora9_5_015.log
dbv file=/vol/vg_ora9/rdbf_ora9_5_016 log=/db_oracle/oracle/rdbf_ora9_5_016.log
dbv file=/vol/vg_ora9/rdbf_ora9_5_017 log=/db_oracle/oracle/rdbf_ora9_5_017.log
dbv file=/vol/vg_ora9/rdbf_ora9_5_018 log=/db_oracle/oracle/rdbf_ora9_5_018.log
dbv file=/vol/vg_ora9/rdbf_ora9_5_019 log=/db_oracle/oracle/rdbf_ora9_5_019.log

 

 유닉스에 스크립트 작성 응용에 도움이 되었으면 하는 마음에 작성을 했습니다.

 

 감사합니다.

 

위로