테스트 환경 : 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
유닉스에 스크립트 작성 응용에 도움이 되었으면 하는 마음에 작성을 했습니다.
감사합니다.