![`tr`이 찾기 및 명령 대체와 함께 작동하지 않는 이유는 무엇입니까? [복사]](https://linux55.com/image/161885/%60tr%60%EC%9D%B4%20%EC%B0%BE%EA%B8%B0%20%EB%B0%8F%20%EB%AA%85%EB%A0%B9%20%EB%8C%80%EC%B2%B4%EC%99%80%20%ED%95%A8%EA%BB%98%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
폴더의 모든 파일을 소문자에서 대문자로 변환/"번역"하고 싶습니다. 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/' {} +
{}
서브셸에서는 확장 되지 않습니다 .