2024. 1. 30. 23:24ㆍ공부/Linux
하이
오랜만입니다
정말.. 오랜만입니다...
사실 징징거리고 싶어서 왔어요. 일이 더 남았는데 코드를 더 볼 힘이 없어...
최근에 학사를 향해 나아가느라 편입도 하고 회사 다니면서 강의도 듣고 하는데
직전 학기에 들은 강의를 이렇게 빨리 써먹을 줄 몰랐어서 정말.. 뿌듯하고 대견하고 그러네요
여튼 오늘의 뻘짓과 뿌듯한짓을 소개해드리져
개요
제가 이번에 맡아서 하는 시스템이 있는데
이미지 업로드 할 때 원본 저장하는 폴더 하나가 그동안 디렉토리 생성이...(눈물)
일단 이미지 뷰어가 아예 보이지 않는 상황이었구요
이미지 전처리를 해주는 친구들인데 디렉토리가 없으니 이미지 전처리를 해줄 수 있을 리 없구요...
양이 꽤 되는지라 원본 다 받아서 다시 전처리 해주고 다시 폴더에 넣어주기도 힘든 상황이라 일단 이미지 읽을 수 있게만... 해놨습니다 어휴 말하면서도 눈물이
첫번째 시도
사실 저도 개발서버에서 하고 싶었어요
근데 개발서버에는 이미지가 없더라(경로 문제)
그래서 디렉토리를 생성해주었습니다
mkdir testimg

그 후에 이미지를 받아올건데
제가 처리하려는 대상 이미지들이 앞에 언더바가 없어요
그래서 언더바가 없는 이미지만 가지고 올 겁니다
find ./ ! -name "*_*" -type f -exec cp {} /{$testimg경로}/ \;
저도 이렇게 복잡하게 써보는 건 처음이었는데요
쉽게 풀어서 설명하자면 현재 경로 하위에 있는 모든 디렉토리에서 이름에 언더바가 들어가있지 않은 파일을 testimg에 복사한다는 뜻입니다.

하하 이미지 가지고 오는 건 성공을 했어요! 하지만 결국 못 썼다...
두번째 시도
첫번째 시도는 막혔습니다
왜냐? 똑같이 환경 세팅이 안 되어있어서..
그래서 운영 서버에서 바로 했는데 정말... 너무 무서워서 로그를 오만 번은 찍은 것 같아요
이번에는 쉘 스크립트를 사용해서 배치를 돌려봤답니다.
#!/bin/bash
checkdir="{확인해야할 경로}"
originfile=”{원본 파일이 위치해있던 경로}”
for file in originfile
do
# original 디렉토리 생성 유무 판별하여 original 디렉토리를 생성하는 스크립트
if test ! -d $file$checkdir; then
makedir=$file$checkdir
mkdir $makedir
echo "만들었어요 $makedir"
fi
# original 디렉토리에 파일의 유무를 판별하여 원본을 복사하는 스크립트
if test -e $file$checkdir; then
makedir="$file$checkdir/"
# mkdir로 만든 디렉토리가 비어있는지 확인하기 위한 변수
countdir=$(ls $makedir|wc -l)
# 디렉토리가 비어있다 == 오늘 만들어준 디렉토리
if test "$countdir" == "0"; then
# 0부터 41까지의 문자열만 저장
olddir=${makedir:0:41}
echo "디렉토리 생성 확인 $olddir"
for olddir in $olddir
do
#파일명에 _이 포함되어있지 않은 이미지만 뽑아냄
imgnm=$(find $olddir ! -name "*_*" -type f)
# 뽑아낸 imgnm이 list이므로 모든 list에 동일한 적용을 하기 위해 다시 반복문으로 처리
for myimg in $imgnm
do
echo "myimg 출력 : $myimg"
realimg=${myimg:41}
echo "realimg 출력: $realimg "
# 추가해야 할 문자열 + realimg
changeimg="chuga_$realimg"
echo "변경될 파일명 출력 : $changeimg"
# 이전 경로
beforedir=$myimg
# 바뀔 경로
afterdir=$olddir"original/"$changeimg
echo "변경전 : $beforedir 변경후 :$afterdir"
cp $beforedir $afterdir
done
done
fi
fi
done
이렇게 보니까 정말 별 거 아닌 거 같은데 이거 확인하고 테스트하고 이러느라 눈물만 쏟았습니다.
하지만 꼼꼼히 로그 찍고 확인했던 게 보상받은 것처럼 무사히 의도한대로 실행을 마쳤답니다 :)

이제 하나만 고치면 퇴근할 수 있어요!!!
마치며
배운 걸 이렇게 빨리, 그것도 현업에 바로! 써먹게 되는 날이 올 줄 몰랐는데
역시 배움은 끝이 없네요
힘들고 지쳤지만 사실 진짜 재미있었어요 이래서 다들 개발하나봐...
근데 옆에서 큰 도움을 주는... 분의 메세지를 받고 눈물을 30분은 더 뽑았답니다


저런... 시련이 와도 대처할 수 있는 성장한 개발자가 될 수 있기를 오늘도 꿈꿔봅니다
여러분들... 안녕...