나는 이와 같은 디렉토리 트리를 가지고 있습니다
.
|-- players
| |-- red_alice.plr
| |-- red_bob.plr
|-- resources
| |-- red_cash.rsc
| |-- red_food.rsc
모든 디렉토리를 반복하고 "red"로 시작하는 파일의 이름을 "blue"로 시작하도록 바꾸고 싶습니다...
나는 이것이 find 및 sed 명령의 작업이라고 생각하지만 상황을 어떻게 표현해야 할지 잘 모르겠습니다... 예를 들어 다음과 같은 방법으로 파일을 찾을 수 있다는 것을 알고 있습니다.
find . -name "red*" -type f
그렇다면 이 출력을 사용하여 빨간색의 이름을 파란색으로 바꾸려면 어떻게 해야 합니까?
답변1
rename 명령을 사용하여 이 작업을 수행할 수 있습니다.
find . -type f -name "red*" -exec rename s/red/blue/g "{}" +;
따라서 이름으로 시작하는 파일을 찾은 red
다음 모든 파일을 다음과 같은 단일 명령에 넣습니다.
rename s/red/blue/g red_first red_second
현재 디렉토리 아래의 모든 디렉토리에 있는 파일을 검색합니다.
답변2
어쩌면 다음과 같은 것일 수도 있습니다.
find . -name "red_*" -exec bash -c 'echo mv "{}" "$(echo "{}" | sed "s%/red_%/blue_%" )"' \;
이것은 단지 인쇄 명령일 뿐입니다. 실제로 작동하는지 확인해 보니 좋네요. 이를 확인했다면 echo
이전 항목을 삭제하세요 mv
.