Programming/linux

리눅스 터미널에서 동일한 폴더 내의 파일명 일괄 변경하기

방황하는 데이터불도저 2024. 3. 23. 17:36

** 다양한 파일명을 변경하는 경우들이 있겠지만 이번 글에서는 특정 단어를 추가하거나 특정 단어를 다른 단어로 변경하는 일괄 처리에 대해서 다루어보았습니다.

 

일반적으로 디렉토리에 있는 모든 파일을 다른 폴더로 옮기려고 할 때 mv 라는 명령어를 사용합니다. 파일을 옮길 때 mv 명령어를 이용하면 이동과 동시에 파일명도 변경해줄 수 있습니다. 일반적으로 아래와 같은 명령어로 수행할 수 있습니다.

mv <file_path> <new_file_path>

 

만약 여러개의 파일을 mv해주고, 파일명을 변경해주고 싶다면 for 구문을 사용해주면 됩니다. 아래의 예시로 어떻게 하는지 알아보겠습니다. 모든 파일에 path는 옮기지 않고, 파일명 변경만 해준 경우입니다. 모든 파일에 new_를 붙여서 옮기는 명령어 입니다.

for file in *
do mv "$file" "new_$file"
done

 

 

 

만약 new_라는 단어를 다시 다른 단어로 변경하기 위해서는 아래와 같이 할 수 있습니다.

for file in new_*.jpg; do
  mv "$file" "${file/new_/word_}"
done

 

"${file/new_/word_}"에서 변수 치환을 통해 new_ 자리에 word_ 를 입력하였습니다.

 

위의 동작은 rename이라는 툴을 통해서도 수행할 수 있습니다. rename은 파일명을 변경하는데에 더 고급 기능을 제공하는 명령어 툴로 아래와 같이 설치 후에 사용할 수 있습니다.

sudo apt install rename

 

rename을 사용한 명령어는 아래와 같습니다.

rename 's/new_/word_' new_*

 

훨씬 간단한 명령어로 같은 동작을 수행할 수 있습니다.