파일 이름의 단어를 바꾸고 날짜 형식을 다시 지정합니다.

파일 이름의 단어를 바꾸고 날짜 형식을 다시 지정합니다.

다음과 같은 파일 이름 패턴을 가진 녹음이 여러 개 있습니다.

%year%month%day-%hour%minute%second__%phonenumber.amr

e.g.:
20190212-112007__+313206601234.amr

나는 다음을 얻기 위해 단어를 바꾸고 싶습니다:

%phonenumber_%day-%month-%year_%hour-%minute-%second.amr

e.g.:
+313206601234__12-02-2019_11-20-07.amr

이 유틸리티를 사용할 수 있다는 것은 알고 있지만 sed그 구문은 고대 언어와 같아서 [0-9] and .이를 대체하기 위해 두 가지를 사용하는 것이 혼란스럽습니다.

답변1

캡처된 숫자 그룹을 사용하고 원하는 이름을 얻으려는 위치에 그룹을 배치하는 것이 전부입니다.

sed -E 's/^([[:digit:]]{4})([[:digit:]]{2})([[:digit:]]{2})-([[:digit:]]{2})([[:digit:]]{2})([[:digit:]]{2})__(\+[[:digit:]]+)/\7__\3-\2-\1_\4-\5-\6/'
  • -EERE(확장 정규식) 활성화

  • [[:digit:]]로캘 인식 번호 일치

  • {N}N앞의 토큰 수와 일치합니다 (예 [[:digit:]]{2}: 2자리와 일치). 이는 범위일 수도 있습니다(예: [[:digit:]]{2,4}2~4자리와 일치).

예:

% sed -E 's/^([[:digit:]]{4})([[:digit:]]{2})([[:digit:]]{2})-([[:digit:]]{2})([[:digit:]]{2})([[:digit:]]{2})__(\+[[:digit:]]+)/\7__\3-\2-\1_\4-\5-\6/' <<<'20190212-112007__+313206601234.amr'
+313206601234__12-02-2019_11-20-07.amr

관련 정보