파일 이름에서 접두사 제거

파일 이름에서 접두사 제거

다음과 같은 파일이 많이 있습니다.

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

편집하다

나는 솔라리스를 사용하고 있다는 사실을 덧붙이는 것을 잊었습니다.

답변1

for file in * ; do
    echo mv -v "$file" "${file#*_}"
done

이 명령을 실행하여 모든 것이 제대로 작동하는지 확인하세요.
그렇다면 echo명령에서 해당 파일을 제거하면 필요에 따라 파일 이름이 변경됩니다.

"${file#*_}"

쉘에서 일반적으로 사용되는 대체 함수입니다. 첫 번째 기호 _앞의 모든 문자 (기호 자체 포함)를 제거합니다. 자세한 내용은 다음을 참조하세요.여기.

답변2

이 도구를 사용할 수 있습니다진주의rename이를 위해:

rename "s/.*_//" *

추가하면 -n아무 것도 이름이 바뀌지 않고 아무 것도 표시되지 않습니다 -n.

rush의 의견에 대한 응답으로: Mine은 실제로 renameDebian 및 Ubuntu 패키지와 함께 제공되는 링크입니다.prenameperl

관련 정보