-
[shell script] for 문 사용예시 - 폴더안의 파일 리스트 읽어오기프로그래밍/Linux 2014. 2. 27. 20:13728x90반응형
폴더안의 파일 리스트를 읽어와서 이름을 일괄 수정해야 함.
폴더안에 있는 파일들 안의 내용이 라인별로 "날짜 내용"인 형태로 저장 되어있고
파일들 내용을 날짜 순으로 정렬을 해서 다시 저장하려고 한다.
#!/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반응형'프로그래밍 > Linux' 카테고리의 다른 글
리눅스에서 date 명령어 사용하기 (0) 2016.03.20 shell script로 이메일 보내기 (0) 2015.12.26 vi 파일 자동 인코딩 변환 막기 (0) 2015.10.15 iptables 사용법 (0) 2015.08.05 리눅스 - bash: iptables: command not found (0) 2015.03.23