728x90
반응형
find 명령을 이용하면 됩니다.
아래 예제는 find로 할수 있는 다양한 옵션을 넣은 것인데
조합해서 사용 하시면 됩니다. 필요에 따라 min-depth max-depth 는 필요 없을 수도 있으나 참고 입니다.
그리고 print 문장에 rm -rf 까지 넣을 수도 있는데 셀에서 지우며 판단을 위해 뺍니다.
find 명령 연습
-----------------------------------------------------------------------
1) find /path -type d -mtime +30 : 30일 이상된 폴더를 찾는 명령입니다.
2) find /path -type d -min-depth 2 -max-depth 3 -mtime +30
/path 하위 2단계 ~ 3단계 사이의 디렉토리를 지웁니다.
/ 이게 없으면 하위 모든 디렉토리가 나옵니다.
3) 위의 명령 결과를 파일로 저장하고 지우거나 지우는 명령을 바로 보낼 수가 있습니다.
find /path -type d -min-depth 2 -max-depth 3 -mtime +30 --exec rm -rf {} \;
* : 위 문장의 마지막 \; 가 가장 중요합니다. 이게 내부적으로 나오는 디렉토리명 하나씩 rm 명령을 보냅니다. 이게 없으면 rm -rf dir1 rm -rf dir2 이런 식으로 내부에서 수행 되므로 명령 오류가 날 것입니다.
4) 저는 find /path -type d -min-depth 2 -max-depth 3 -mtime +30 -printf "/path/%P\n" > d.lst
로 파일로 결과를 저장을 하고
다음 셀을 만들어 볼 것 같습니다.
-printf "/path/%P\n" : find 를 수행 한 곳과 저장되는 파일 위치가 다르므로 실제 Full Path를 만들기 위해 사용한 것입니다.
[ rmdir.sh ]
--------------------------------------
find /path -type d -min-depth 2 -max-depth 3 -mtime +30 -printf "/path/%P\n" > d.lst
FILES=`cat d.lst` # 파일을 변수로 저장하기
cd /path # find 한 위치와 동일한 상태가 되어야 함..
for f_name in $FILES
do
if [ -d "$f_name"] # 디렉토리가 있으면 지우고 아니면 넘어감
then
rm -rf "$f_name"
Ret=$?
if [ $Ret -eq 0 ]
then
echo " dir deleted [$?]" >> del.ok # 지우는 것이 성공한것
else
echo " dir deleted [$?]" >> del.err # 지우다가 권한 문제로 못지울수 있음
fi
else
echo " dir not Exists [$f_name] !! " >> del.skip # 서브 디렉토리가 이미 지워질수 있음
fi
done
----------------------------------------------------------
실제 명령은 한줄이 될수도 있는데 좀 다양한 것을 넣어서 어려울 수도 있겠네요
공부하는 데 정답보다 배워야 할 것을 던져 봅니다.
그냥 보면 쉽습니다.
셀스크립트는 간단하면서 다양한 일들을 할수 있습니다.
위의 셀스크립트는 간단하면서도 상당한 난이도를 둔 일들을 할 수 있는 프로토 타입입니다.
숙제를 하는 것도 좋지만 다른데 많이 쓸수 있을 것입니다.
장담 하건데 위의 셀이면 어떤 일에든 고수가 될수 있을 것입니다. ^^
도움이 되셨기를 바랍니다.
rsnapshot 이라는 오픈 소스 백업이 있는데요.
정말 편합니다. 증분백업을 하기 때문에 공간도 많이 차지 하지 않구요.
이용해 보셔요.
원하는 디렉토리별로 백업을 할 수 있습니다.
도움이 필요하시면 도와 드릴께요.
728x90
반응형
'UNIX&LINUX > LINUX' 카테고리의 다른 글
리눅스 생활코딩 (8) top , df, du (0) | 2014.05.13 |
---|---|
5. find 사용 (0) | 2014.05.13 |
리눅스 명령어 한꺼번에(소유님꺼) (0) | 2014.05.13 |
리눅스의 기본 명령어 (0) | 2014.05.13 |
리눅스의 명령어와 명령어 옵션 (0) | 2014.05.13 |
리눅스 특정 폴더 내용 삭제 방법 (0) | 2014.05.13 |
[Linux] 파일명에 날짜 넣기 (0) | 2014.05.13 |
현재 열려있는 포트 확인 netstat -an | grep LISTEN (0) | 2014.04.23 |