여러 파일에서 텍스트를 찾아 바꾸는 기능을 정의하고 싶습니다. 명령줄을 찾았습니다
find . -type f -exec bash -c 'mv "$1" "${1/<string_to_find>/<string_to_replace>}"' _ {} \;
자주 사용해야 하기 때문에 다음과 같은 파일 .zshrc
의 함수 에 넣고 싶습니다.
myrename() {
find . -type f -exec bash -c 'echo mv "$1" "${1/$arg1_myrename/$arg2_myrename}"' _ {} \;
}
폴더에 있는 해당 이름을 가진 모든 파일이 $ myrename "<string_to_replace>" "<replacement>"
.<string_to_replace>
<replacement>
답변1
모드 및 매개변수를 환경 매개변수로 다음에 전달할 수 있습니다 find
.
myrename(){
in=$1 out=$2 find . -type f -exec bash -c 'mv -- "$1" "${1/$in/$out}"' _ {} \;
}
그러나 Kosalonanda가 말했듯이 그것이 바로 그것입니다 rename
.
myrename(){
find . -type f -exec rename "s/$1/$2/" {} +
}