이미지 파일 일괄 이름 바꾸기

이미지 파일 일괄 이름 바꾸기

여러 장의 사진이 담긴 폴더가 있습니다. 파일 이름을 모두 소문자로 변환한 다음 특정 문자열을 모두 제거하고 싶습니다.

예를 들어 앞으로는 , , , 및 BILD02_CMYK_freigestellt_RENDER_3D.jpg연결된 단어를 삭제해야 합니다. 지금까지 다음과 같은 조합이 있지만 이것이 첫 번째 단락이 되며 모든 항목이 아닌 첫 번째 항목만 삭제됩니다.cmykrender3d_

// Rename names to lowercase
for file in *; 
do 
   mv "$file" "$file.tmp"; 
   mv "$file.tmp" "`echo $file | tr "[:upper:]" "[:lower:]"`"; 
done

// Remove cmyk from filename
// optimierung: macht es nur einmal bei einer datei - ----
for file in *; do mv "${file}" "${file/cmyk/}"; done
for file in *; do mv "${file}" "${file/freigestellt/}"; done
for file in *; do mv "${file}" "${file/-/_}"; done

답변1

rename -n '$_=lc; s/(cmyk|freigestellt|render|3d|_|-)//g' *.jpg

이는 다음을 사용합니다.진주prename이름 바꾸기 명령( 및 라고도 함 file-rename) 이것은아니요rename명령줄 옵션과 기능이 완전히 다른 util-linux의 명령과 혼동됩니다 .

먼저 Perl의 기능을 사용하여 파일 이름을 소문자로 변환한 lc()다음 텍스트나 샘플 코드에서 언급한 모든 단어와 문자를 제거합니다.

-n옵션을 사용하면 rename연습 실행이 발생합니다. 허용한 경우 수행할 작업만 표시됩니다. 실제로 파일 이름을 바꾸려면 해당 파일을 제거 하거나 자세한 출력으로 -n바꾸십시오 .-v

예를 들어

$ touch BILD{00..05}_CMYK_freigestellt_RENDER_3D.jpg
$ rename -v '$_=lc; s/(cmyk|freigestellt|render|3d|_|-)//g' *.jpg
BILD00_CMYK_freigestellt_RENDER_3D.jpg renamed as bild00.jpg
BILD01_CMYK_freigestellt_RENDER_3D.jpg renamed as bild01.jpg
BILD02_CMYK_freigestellt_RENDER_3D.jpg renamed as bild02.jpg
BILD03_CMYK_freigestellt_RENDER_3D.jpg renamed as bild03.jpg
BILD04_CMYK_freigestellt_RENDER_3D.jpg renamed as bild04.jpg
BILD05_CMYK_freigestellt_RENDER_3D.jpg renamed as bild05.jpg

관련 정보