1월 1, 2022

리눅스에서 한 번에 여러 파일의 이름을 바꾸는 방법

리눅스에서 여러 파일의 이름을 바꾸는 것은 간단한 작업처럼 들리지만 다소 복잡해질 수 있습니다. 일반적으로 기본적으로 설치되지 않은–그것은 대량mv명령과 배쉬 스크립팅의 비트와 파일의 이름을 바꾸거나mmvrename유틸리티를 사용하는 것이 가능합니다. 이 가이드에서는 리눅스 명령 줄에서 한 번에 여러 파일의 이름을 변경하기위한 다양한 예제를 보여 드리겠습니다.

이 가이드의 예제는 현재 작업 디렉터리의 모든 파일 이름을 바꾸는 데 사용됩니다. 이러한 명령의 대부분은 재귀 적으로 작동하도록 쉽게 조정할 수 있습니다. 일부 예제에서는 디렉터리의 이름을 바꿀 수도 있습니다.

여러 파일 이름 바꾸기

mv명령은 리눅스의 기본 부분이며 여러 파일의 이름을 바꾸는 데 사용할 수 있지만 작업을 수행하려면 약간의 스크립팅이 필요합니다. 몇 가지 예는 같은 다른 기본 리눅스 유틸리티에 의존ls, find, xargs, 기타

예 1. 소문자로 모든 파일 이름을 변경합니다.

$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'A-Z' 'a-z'`"; done

예 2. 모든 파일 이름을 대문자로 변경하십시오.

$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'a-z' 'A-Z'`"; done

예 3. 모든 파일 확장명을.jpeg에서.jpg로 변경합니다.

$ for f in *.jpeg; do mv "$f" "${f%.jpeg}.jpg"; done

예 4. 모든 파일에서.bak파일 확장명을 제거하십시오.

$ for f in `ls *.bak`; do mv $f ${f%.*}; done

예 5. 모든 파일에.bak파일 확장자를 추가합니다.

$ for f in `ls`; do mv $f $f.bak; done

예 6. xargs를 사용하여 모든 파일에”_백업”을 추가합니다.

$ ls * | xargs -I{} mv {} {}_backup

실시예 7. find,sedmv명령을 사용하여 모든 파일을 소문자로 변경합니다.

$ find . -maxdepth 1 -type f -name '**'|sed -n 's/\(.*\/\)\(.*\)/mv -n -v -T  \L/p'|sh

예 8. find -execmv명령을 사용하여.log확장자로 끝나는 모든 파일에”_백업”을 추가합니다.

$ find . -type f -name "*.log" -exec mv {} {}_backup \;

예 9. 이전 예제와 비슷하지만 찾기-exec옵션을xargs로 바꾸면.log확장자로 끝나는 모든 파일에”_백업”을 추가합니다.

$ find . -type f -name '*log' -print0 | xargs --null -I{} mv {} {}_backup

실시예 10. mvsed을 사용하여 모든 파일의 패턴을 바꿉니다. 이것은 모든.jpg파일에서”이미지”를”휴가”로 대체합니다.

$ for f in *.jpg; do mv "$f" "`echo "$f" | sed s/IMG/Vacation/`"; done

예 11. 현재 타임스탬프를.log으로 끝나는 모든 파일에 추가합니다. 이렇게 하면access.log과 같은 파일이access_20210418040151.log로 변경됩니다.

$ for f in *.log; do mv "$f" "${f%.log}"_`date +%Y%m%d%H%M%S`.log; done

이름 바꾸기로 여러 파일 이름 바꾸기

이름 바꾸기 유틸리티를 사용하면 대량 이름 바꾸기 작업이 좀 더 쉬워 지지만 유틸리티가 항상 기본적으로 설치되는 것은 아닙니다. 아래의 적절한 명령을 사용하여 시스템의 패키지 관리자와 함께 설치하십시오.

우분투,데비안,리눅스 민트:

$ sudo apt install rename

페도라,알말리눅스,센토스,렐:

$ sudo dnf install prename

아치 리눅스와 만자로:

$ sudo pacman -S perl-rename
변경 사항을 미리 보려면rename명령에서-n옵션을 사용합니다.

예 1. 소문자로 모든 파일 이름을 변경합니다.

$ rename 'y/A-Z/a-z/' *

예 2. 모든 파일 이름을 대문자로 변경하십시오.

$ rename 'y/a-z/A-Z/' *

실시예 3. 모든 파일에서.bak확장을 제거합니다.

$ rename 's/\.bak$//' *.bak

예 4. 모든.jpeg파일의 확장명을.jpg로 변경합니다.

$ rename 's/\.jpeg/\.jpg/' *.jpeg

예 5. 모든 파일에 대해 대문자 확장.JPG을 소문자.jpg로 변경합니다.

$ rename 's/\.JPG/\.jpg/' *.JPG

예 6. 모든 파일 이름에서 공백을 제거하십시오.

$ rename "s/ *//g" *

실시예 7. 빈 공간을 모든 파일 이름에 대한 밑줄로 바꿉니다.

$ rename 's/\s+/_/g' *

예 8. 모든 파일 이름의 첫 글자를 대문자로 표시하십시오.

$ rename 's/\b(\w)/\U/g' *

예 9. 모든 파일 이름의 패턴을 바꿉니다. 이 명령은 모든.jpg파일에서”이미지”를”휴가”로 바꿉니다.

$ rename 's/IMG/Vacation/' *.jpg

실시예 10. 파일 이름의 일부를 삭제합니다. 이 명령은 모든.jpg파일에서”이미지_”를 제거합니다.

$ rename 's/IMG_//' *.jpg

실시예 11. 모든 파일에.bak확장자를 추가합니다.이 유틸리티는 모든 파일에 문자열을 제거하거나 추가하거나 파일 이름의 일부를 재정렬하는 등의 패턴을 기반으로 파일 이름을 변경하는 데 탁월합니다. 일반적으로 기본적으로 설치되지는 않지만 아래의 적절한 명령을 사용하여 시스템의 패키지 관리자를 설치할 수 있습니다.

우분투,데비안,리눅스 민트:

$ sudo apt install mmv

페도라,알말리눅스,센토스,렐:

$ sudo dnf install mmv

아치 리눅스와 만자로(에서 설치):

$ git clone https://aur.archlinux.org/mmv.git$ cd mmv/$ makepkg -si
변경 사항을 미리 보려면mmv명령에서-n옵션을 사용합니다.

예 1. 모든.jpeg파일의 확장명을.jpg로 변경합니다.

$ mmv '*.jpeg' '#1.jpg'

예 2. 소문자로 모든 파일 이름을 변경합니다.

$ mmv '*' '#l1'

실시예 3. 모든 파일 이름을 대문자로 변경하십시오.

$ mmv '*' '#u1'

예 4. 파일 이름의 일부를 다시 정렬합니다. 이 명령은 패턴Song-Artist.mp3Artist-Song.mp3인 음악 파일을 변경합니다.

$ mmv '*-*.mp3' '#2-#1.mp3'

예 5. 모든 파일 이름에”휴가”와”이미지”의 첫 번째 발생을 교체합니다.

$ mmv '*IMG*' '#1Vacation#2'

예 6. 모든 파일 이름에 접두사를 추가합니다. 이 명령은 모든.log파일에”백업_”앞에 추가합니다.

$ mmv '*.log' 'backup_#1.log'

실시예 7. 모든 파일 이름에 접미사를 추가합니다. 이 명령은 모든.log파일에”_백업”을 추가합니다.

$ mmv '*.log' '#1.log_backup'

예 8. 모든.jpg파일에서 접두사를 제거합니다.

$ mmv 'IMG_*.jpg' '#1'

예 9. 모든 파일에서”_오래된”접미사를 제거하십시오.파일 이름 바꾸기 명령줄이 실제로 작동하지 않으면 한 번에 여러 파일의 이름을 바꿀 수 있습니다. 이 작업을 수행하는 가장 좋은 도구 중 하나는 투나와 함께 제공되는 대량 이름 바꾸기 응용 프로그램입니다.하지만 사용 중인 데스크톱 환경에 관계없이 설치할 수 있습니다. 만약 당신이 이미 사용 하 고,다음 대량 이름 바꾸기 이미 시스템의 일부입니다. 그렇지 않으면 아래의 적절한 명령을 사용하여 시스템의 패키지 관리자에 설치하십시오.

우분투,데비안,리눅스 민트:

$ sudo apt install thunar

페도라,알말리눅스,센토스,렐:

$ sudo dnf install thunar

아치 리눅스와 만자로:

$ sudo pacman -S thunar

1 단계. 투나르가 설치된 후 대량 이름 바꾸기 유틸리티를 검색하여 엽니다.

대량 이름 바꾸기 유틸리티

열기 2 단계. 이름을 바꿀 파일을 추가하려면 더하기 기호를 클릭합니다.

대량 이름 바꾸기 응용 프로그램에 파일 목록 추가

단계 3. 옵션 목록에서 파일로 수행할 작업을 선택합니다. 대문자 또는 소문자로 모두 변경하고,날짜와 시간을 추가하고,특정 위치에 텍스트를 삽입하고,자동 번호 매기기를 추가하고,문자를 바꾸거나,파일 이름의 특정 패턴을 검색하고 대체 할 수 있습니다. 아래 예제에서는.txt파일 확장자를 모든 파일에 추가했습니다.

이전 이름과 새 파일 이름을 보여주는 대량 이름 바꾸기 도구

4 단계. 당신은”새 이름”열에서 미리 이름 변경에 만족하면,대량 이름 변경을 수행하기 위해”파일 이름 바꾸기”를 클릭합니다.파일 이름 바꾸기 작업 완료

여러 파일 이름 바꾸기

위의 일부 명령,특히 파일을 소문자 또는 대문자로 변경하는 명령이 작동하지 않습니다. 윈도우는 대/소문자를 구분하지 않으므로File.txt,file.txtFILE.txt이 모두 동일한 파일로 간주됩니다.

FILE.txt에서file.txt의 이름을 바꾸려고 하면 파일이 이미 있다는 오류가 나타납니다. 이 문제를 방지하려면 다음 예제 중 하나를 사용하십시오.

예 1. 모든 파일에 대해 대문자 확장.JPG을 소문자.jpg로 변경합니다(기본 유틸리티 사용).

$ for f in *.JPG; do mv "$f" "${f%.JPG}.jpgaux"; done && for f in *.jpgaux; do mv "$f" "${f%.jpgaux}.jpg"; done

예 2. 모든 파일에 대해 대문자 확장.JPG을 소문자.jpg로 변경합니다(이름 바꾸기 유틸리티 사용).

$ rename 's/\.JPG$/\.jpgaux/' *.JPG && rename 's/\.jpgaux$/\.jpg/' *.jpgaux

예 3. 모든 파일에 대해 대문자 확장.JPG을 소문자.jpg로 변경합니다.

$ mmv '*.JPG' '#1.jpgaux' && mmv '*.jpgaux' '#1.jpg'

예 4. 모든 파일 이름을 소문자로 변경하십시오(기본 유틸리티 사용).

$ for f in `ls | grep `; do mv "$f" "`echo $f.aux | tr 'A-Z' 'a-z'`"; done && for f in `ls *.aux`; do mv $f ${f%.*}; done

예 5. 모든 파일 이름을 소문자로 변경하십시오.

$ mmv '*' '#l1.aux' && mmv '*.aux' '#1'

결론

리눅스에서 모든 대량 이름 바꾸기에 기본 배쉬 유틸리티를 사용할 수 있습니다. 이 프로그램은 자바 바이트코드 프로그램의 갯수를 카운트하고,스크립트의 메인 형식을 합계냅니다,그리고 확인되지 않은 실행 텍스트 파일을 찾습니다.. 이 가이드의 예제는 광범위한 이름 바꾸기 시나리오를 다루며 다른 요구에 맞게 쉽게 조정할 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다.