파일 이름에서 접두사 제거 이렇게 생겼어야 해요 .. b0294.DAT20120807164534 b0297.DAT20120807164713 b0296.DAT20120807164637 b0299.DAT20120807164819 b0298.DAT20120807164748 b0300.DAT20120807164849 b0301.DAT20120807164921 b0302.DAT20120807164956 편집하다 Solaris를

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

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 renameis는 실제로 prename데비안 및 우분투 perl패키지 와 함께 제공 되는 링크 입니다.