문제

다음 형식으로 이름을 바꿔야하는 수천 개의 파일이 있습니다. 2008 : 09 : 18 : 17 : 45 : 48-alfanumeric-alfanumeric.wav 첫 번째 부분은 날짜입니다.

전. 2008 : 09 : 18 : 17 : 45 : 48-703-S.wav

이름 바꾸고 싶습니다.

20080918.174548.703.S.wav

기본적으로 ':'를 제거하고보다 인간 읽기 쉬운 형식을 만들고 분할하기가 더 쉬워집니다.

이름 바꾸기는 내가 찾고있는 것이지만 Regex가 작동하지 않는다는 것을 알고 있습니다. 타이핑 :

이름 바꾸기 's/( d) : ( d) : ( d) : ( d) : ( d) : ( d)-(.?)-(.?). Wav/$ 1 $ 2 $ 3. $ 4 $ 5 $ 6. $ 7. $ 8.wav/'./*

도움이 되었습니까?

해결책

다중성을 고려해야합니다.

rename 's/(\d+)\:(\d+)\:(\d+)\:(\d+)\:(\d+)\:(\d+)-(.*)-(.?).wav/$1$2$3.$4$5$6.$7.$8.wav/' ./*

다른 팁

rename 's/(\d+):(\d+):(\d+):(\d+):(\d+):(\d+)-([^-]+)-([^.]+).wav/$1$2$3.$4$5$6.$7.$8.wav/' ./*

사용해야합니다 - 버전에서는 항상 하나의 숫자 만 일치합니다. 또한, 탈출 할 필요가 없습니다.

이것이 당신이 한 번만 할 일이라면, 나는 이런 식으로 할 것입니다.

1) ls 파일을 새 파일로 가져옵니다 : ls datadir> mytmp 2) 좋아하는 편집기와 함께 mytmp를 편집하십시오. 2a ""와 같이 관심있는 데이터 파일이 아닌 줄을 삭제합니다. ".."2b 각 줄을 쉘 명령으로 편집하여 파일 이름을 바꿉니다. 나는 EMACS를 좋아하고 키보드 매크로를 만들고 : 파일 이름을 클립하고, "mv"를 삽입하고, 파일 이름을 삽입하고, 공간을 삽입하고, 파일 이름을 다시 삽입하고, 삽입 된 파일 이름을 원하는 형식으로 편집합니다. 2c 저장 3) 실행 sh <mytmp

완료! 편집자가 매크로 나 유사한 기능을 지원하지 않지만 작동하고 git-er-done을 보장하는 경우 우아하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top