다음과 같이 많은 파일이 있습니다.
04602635_b0294.DAT20120807164534
04602637_b0297.DAT20120807164713
04602638_b0296.DAT20120807164637
04602639_b0299.DAT20120807164819
04602640_b0298.DAT20120807164748
04602641_b0300.DAT20120807164849
04602650_b0301.DAT20120807164921
04602652_b0302.DAT20120807164956
접두사를 제외하려면 이름을 바꿔야합니다. 이렇게 생겼어야 해요 ..
b0294.DAT20120807164534
b0297.DAT20120807164713
b0296.DAT20120807164637
b0299.DAT20120807164819
b0298.DAT20120807164748
b0300.DAT20120807164849
b0301.DAT20120807164921
b0302.DAT20120807164956
편집하다
Solaris를 사용하고 있음을 추가하는 것을 잊었습니다.
답변
for file in * ; do
echo mv -v "$file" "${file#*_}"
done
모든 것이 정상임을 만족시키기 위해 이것을 실행하십시오.
그렇다면 echo
명령 에서 제거 하면 원하는대로 파일 이름이 바뀝니다.
"${file#*_}"
쉘의 일반적인 대체 기능입니다. 첫 번째 _
기호 앞의 모든 문자를 제거합니다 (기호 자체 포함). 자세한 내용은 여기 를 참조 하십시오 .
답변
rename
이 도구 를 사용할 수 있습니다 :
rename "s/.*_//" *
추가 -n
하면 이름이 바뀌지 않고없이 수행 된 작업을 보여줍니다 -n
.
rush의 의견에 대한 응답으로 : my rename
is는 실제로 prename
데비안 및 우분투 perl
패키지 와 함께 제공 되는 링크 입니다.