현재 폴더에 있는 파일 이름에 앞부분을 제외한 후 뒷 부분만 남기고 싶었다.
파이썬으로 하면 간단하긴 한데... shell로 진행해보고 싶었다.
현재 폴더에 있는 파일명은 아래와 같다.
tree -l
.
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트1_ch1.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트1_ch2.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트1_ch3.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트1_ch4.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트3_ch1.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트3_ch2.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트3_ch3.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트3_ch4.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트3_ch5.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트3_ch6.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트3_ch7.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트3_ch8.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트3_ch9.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트4_ch1.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트4_ch2.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트4_ch3.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트4_ch4.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트4_ch5.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트4_ch6.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트2_ch1.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 파트2_ch2.pdf
├── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 부록_파트1.pdf
└── [패스트캠퍼스] 클라우드 환경을 위한 리눅스 - 부록_파트2.pdf
for file in *; do
if [[ -f $file ]]; then
# $file 에 담겨있는 str을 "-"를 기준으로 잘라서 뒷부분을 가져온 후
# awk '{$1=$1};1'를 통해서 스플릿된 텍스트 앞에 스페이스바가 있을 경우를 삭제해줌
new_name=$(echo $file | awk -F"-" '{print $2}' | awk '{$1=$1};1')
mv $file $new_name
fi
done
if [[ -f $file ]]; then
: $file에 담긴 값이 파일인 경우
echo $file
: 변수에 담긴 값을 출력하며 파이프를 사용해 출력 결과를 이후 명령어로 전달
awk -F"-" '{print $2}'
: 전달받은 출력 결과를 -F
옵션으로 "-" 구분자를 지정한 뒤, '{print $2}'로 두 번째 필드를 선택
awk '{$1=$1};1'
: 선택한 필드(출력값)을 전달받은 후 문자열 앞뒤로 공백이 있을 경우 제거
$(...)
를 사용하여 명령어의 결과를 변수 new_name에 할당