`tr`이 찾기 및 명령 대체와 함께 작동하지 않는 이유는 무엇입니까? [복사]

`tr`이 찾기 및 명령 대체와 함께 작동하지 않는 이유는 무엇입니까? [복사]

폴더의 모든 파일을 소문자에서 대문자로 변환/"번역"하고 싶습니다. for루프를 사용하여 이 작업을 수행 할 수 있습니다 .

for i in ./* ; do mv $i $(echo $i | tr "a-z" "A-Z") ; done
for i in `find . -maxdepth 1 -mindepth 1` ; do mv $i $(echo $i | tr "a-z" "A-Z") ; done

tr하지만 다음 범위에서는 왜 작동하지 않는지 알고 싶습니다 find.

find . -maxdepth 1 -type f -exec mv {} $(echo {} | tr "a-z" "A-Z") \;

파일 이름을 다시 인쇄하고 대문자로 변경합니다. find버전이 작동하지 않는 이유는 무엇 입니까?

내 목표는 루프 find보다는 사용하는 것입니다 for.

답변1

대신 사용하십시오 rename:

find . -maxdepth 1 -type f -exec rename 'y/a-z/A-Z/' {} +

{}서브셸에서는 확장 되지 않습니다 .

관련 정보