이름의 첫 번째 숫자나 문자의 특정 부분을 제거하여 모든 폴더의 이름을 바꿉니다.

이름의 첫 번째 숫자나 문자의 특정 부분을 제거하여 모든 폴더의 이름을 바꿉니다.

다음과 같은 긴 폴더 목록이 있습니다.

001_bat_3513
002_mon_3213
003_bat_3515
scd_btt_3540
s52_bat_4513
xx2_bpt_8523
056_bot_3513
058_bat_1513
.
.

이 목록에서: 이름에서 처음 세 개의 숫자나 문자를 제거하여 모든 폴더의 이름을 바꾸는 방법은 무엇입니까? 따라서 목록은 다음과 같습니다.

bat_3513
mon_3213
bat_3515
btt_3540
bat_4513
bpt_8523
bot_3513
bat_1513
.
.

답변1

쉘이 매개변수 확장을 지원한다고 가정하면:

for f in *_*_*; do mv -i "$f" "${f#*_}"; done
  • 매개변수 확장 모드는 왼쪽부터 첫 번째 부분 문자열을 ${f#*_}삭제합니다 ._

또는 rename( prename)를 사용하세요:

rename 's/^[^_]*_(.*)/$1/' *_*_*
  • ^[^_]*_처음부터 첫 번째 하위 문자열과 일치 _하고 (.*)나머지 하위 문자열과 일치하며 교체를 위해 첫 번째 일치 그룹에도 배치됩니다.

관련 정보