Rename Files with Shell Script

Eunbin Park·2023년 3월 31일
0

shell-script

목록 보기
3/3

현재 폴더에 있는 파일 이름에 앞부분을 제외한 후 뒷 부분만 남기고 싶었다.
파이썬으로 하면 간단하긴 한데... 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

script

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에 할당

0개의 댓글