
다음과 같은 긴 폴더 목록이 있습니다.
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/' *_*_*
^[^_]*_
처음부터 첫 번째 하위 문자열과 일치_
하고(.*)
나머지 하위 문자열과 일치하며 교체를 위해 첫 번째 일치 그룹에도 배치됩니다.