스페이스바가 포함된 파일이름 for loop에서 호출하기

Eunbin Park·2023년 4월 23일
0

shell-script

목록 보기
1/3

pdf 파일만을 호출해서 파일명 가장 앞에 'ch3-'을 붙이고자 했다.
아래와 같이 스페이스바가 포함된 파일명이 있을 때, for loop으로 파일명을 하나씩 호출할 때 spacebar 단위로 잘린 list가 형성되었다.
my-file-list

for-loop-호출

...
mv 명령어를 사용하려는데 이렇게 나오면 안 된다.
파일명을 수동으로 변경해줄 수야 있겠지만, 이러면 어두에 붙이려던 단어까지 수동으로 처리하면 되기에...

먼저 IFS=$'\n'을 입력해준다.
이후 for loop으로 출력하면 아래와 같이 잘 나온다.

이제 여기서 나는 -를 기준으로 뒤에 Jupyter Notebook은 지워주고, prefix와 확장자를 붙인 새 이름을 설정해 줄 거다.
기준단어 설정 후 split은 이전 포스트에 작성해두었으니 이 기억을 되살려서 작성했다.

최종본은 다음과 같다.

IFS=$'\n'
for i in `find . -name "*.pdf"`;
do
new_name=$(echo $i | awk -F" - " '{ print $1}' | awk '{$1=$1}1')
if [[ "$new_name" == *.pdf ]]; then
mv $i "ch3-${new_name:2}"
else
mv $i "ch3-${new_name:2}.pdf"
fi
done

0개의 댓글