프로그래밍/Linux

[shell script] for 문 사용예시 - 폴더안의 파일 리스트 읽어오기

kugancity 2014. 2. 27. 20:13
반응형


폴더안의 파일 리스트를 읽어와서 이름을 일괄 수정해야 함. 

폴더안에 있는 파일들 안의 내용이 라인별로 "날짜 내용"인 형태로 저장 되어있고

파일들 내용을 날짜 순으로 정렬을 해서 다시 저장하려고 한다.


 

#!/bin/sh

searchdir=/var/www/html/searchdir

for entry in $searchdir/*

do

        echo "$entry"

        filename="$entry"

        sed 's/Sep/\t09\t/g' $filename > $searchdir/tmp

        sed -i 's/Oct/\t10\t/g' $searchdir/tmp

        sed -i 's/Dec/\t12\t/g' $searchdir/tmp

        ...

        sort -u $searchdir/tmp | sort -n -k 4,4 -k 3,3 -k 2,2 -k 5,5 > $filename.sorted

done


일단 폴더 안에 있는 파일 이름을 가져온다. 

파일 이름에 공백이 포함되어 있어 ""를 씌어 다른 이름으로 저장한다.

sort(정렬)함수를 사용하기 위해 문자로 되어있는 날짜 표현을 숫자로 치환한다. 

내용이 겹치는 라인들도 있기 때문에 일단 unique line만 남기기 위해 sort -u를 해서 파이프로 보낸다.

파이프로 받은 unique line들을 필드별 우선 순위로(-k) 숫자 정렬 (-n) 하여  파일이름을 변경하여 저장한다. 



728x90
반응형