터미널을 사용하여 파일 이름을 일괄 적으로 변경하려면 어떻게해야합니까?
나는 파일 세트를 가지고 있는데, 모두 nnn.MP4.mov어떻게 이름을 바꿀 수 nnn.mov있습니까?
먼저 다음을 사용하여 테스트 실행 (실제로 파일 이름을 변경하지 않음)을 수행합니다.
for file in *.mov
do
echo mv "$file" "${file/MP4./}"
done
모든 것이 정상 echo이면 세 번째 줄에서를 제거하여 실제로 파일 이름을 바꿉니다.
저는 Automator를 성공적으로 사용했으며 (처음으로 고민했습니다) 정말 잘 작동합니다. 자동화를 서비스로 저장했습니다. 쉽게 재사용 할 수있게 만드는 데 약 10 초가 걸렸습니다.
- Automator를 엽니 다.
- 문서 유형으로 "서비스"를 선택합니다.
- 변경 서비스는 선택된 "텍스트"를 "파일 및 폴더"로 수신합니다.
- "모든 응용 프로그램"을 Finder로 변경하는 것을 고려하십시오.
- 사이드 바에서 "파일 및 폴더"(라이브러리 아래)를 선택하고 나열된 작업에서 가운데 열에서 "Finder 항목 이름 바꾸기"를 오른쪽으로 끌어 "여기로 작업 또는 파일을 끌어 워크 플로를 구축합니다. "
- 방금 추가 한 작업을 "날짜 또는 시간 추가"에서 "순차로 만들기"로 변경합니다.
- 작업 하단에서 "옵션"을 클릭하고 "워크 플로가 실행될 때이 작업 표시"옵션을 선택합니다.
- "CMD + S"를 눌러 서비스를 "텍스트 교체"와 같은 형식으로 저장합니다.
- 끝난!
이제 Finder에서 선택 항목을 마우스 오른쪽 버튼으로 클릭하고 서비스 메뉴로 이동 한 다음 "텍스트 교체"를 선택하고 텍스트 변경 또는 교체 방법을 입력 한 다음 "계속"을 클릭하여 구성된 변경 사항을 적용 할 수 있습니다.
for n in *.MP4.mov
do
mv $n $(echo $n | sed -e 's/.MP4//')
done
이것은 매개 변수 대체가없는 정말 오래된 쉘에서도 작동 할 것이며, 적어도 내 눈에는 좀 더 읽기 쉽습니다.
작업 인쇄를 테스트하려면 :
for file in *.MP4.mov; do j=`echo $file | cut -d . -f 1`;j=$j".mov";echo mv \"$file\" \"$j\"; done
작동하려면 :
for file in *.MP4.mov; do j=`echo $file | cut -d . -f 1`;j=$j".mov";mv "$file" "$j"; done
Mac OSX에서는 renameHomebrew를 통해 명령을 설치할 수 있습니다 .brew install rename
그런 다음 명령 줄의 해당 폴더에서 찾기 / 바꾸기를 사용하여 이름을 바꿀 수 있습니다.
rename 's/\.MP4\././' *
을 사용하여 더 많은 옵션을 볼 수도 있습니다 man rename.
OS X에는 Rename Files…Finder에서 두 개 이상의 파일을 선택할 때 호출되는 컨텍스트 메뉴 항목이 있습니다. 위의 Automator 답변과 동일한 기능을 제공합니다. Automator는 원하는 경우 더 나아갈 수있는 도구를 제공합니다.
(나는 OP가 터미널을 요청했지만 Automator 응답을 좋아하는 33 명을 알고 있습니다)
for i in `ls *png`;do echo mv $i "${i%%.*}"@xx."${i##*.}";done
vimv를 사용하면 Vim의 텍스트 편집 기능을 사용하여 여러 파일의 이름을 바꿀 수 있습니다.
Entering vimv opens a Vim window which lists down all files and you can do pattern matching, visual select, etc to edit the names. After you exit Vim, the files will be renamed.
[Disclaimer: I'm the author of the tool]
ls -1 *.MP4.mov | while read f; do mv -i "$f" "$(basename \"$f\" .MP4.mov)"; done
Edit: completly rewritten.
for i in *;
do j=`echo $i | cut -d . -f 1`;
j=$j".mov";
mv $i $j;
done
this will cut everything before the first dot and appends .mov
but if some files are e.g. hi.2.mov and hi.1.mov one will be overwritten, so use it carefully ^^
참고URL : https://stackoverflow.com/questions/5394112/how-can-i-batch-rename-files-using-the-terminal
'Program Club' 카테고리의 다른 글
| UIImageView에서 이미지 제거 (0) | 2020.12.14 |
|---|---|
| “폐쇄는 가난한 사람의 물건이고 그 반대의 경우도 마찬가지입니다.”-이것은 무엇을 의미합니까? (0) | 2020.12.14 |
| Javascript / jQuery : 낙타 문자 문자열을 분할하고 공백 대신 하이픈 추가 (0) | 2020.12.14 |
| setOnCancelListener 및 setOnDismissListener는 뒤로 버튼을 누르거나 외부를 터치하는 경우 AlertDialog에 대해 호출되지 않습니다. (0) | 2020.12.14 |
| 원격 저장소에 변경 사항을 푸시 할 때이 Git 경고 메시지는 무엇입니까? (0) | 2020.12.14 |