특정 패턴을 사용하여 이 파일 묶음의 이름을 바꿉니다.

특정 패턴을 사용하여 이 파일 묶음의 이름을 바꿉니다.

다음과 같은 이름 세부정보를 가진 파일이 많이 있습니다..

2007-07-22-2300-11S.NAN___024_ABI___HH_E_SAC

어디:

  • 2007-07-22날짜입니다.
  • 2300-11S흠 초입니다.
  • NAN___024네트워크가 각 파일에 대해 동일한지 여부(새 이름에는 필요하지 않음)
  • ABI__HH_E 이스트 채널의 역 이름입니다.
  • SAC확장입니다.

또한 모든 파일의 이름을 동일한 형식으로 바꾸고 싶습니다.

2007.204.23.00.ABI.e

어디:

  • 2007올해입니다.
  • 204율리우스 데이(07-22)입니다.
  • 23.00때가됐다.
  • ABI역이에요.
  • e채널 이름입니다.

답변1

다음과 같이 가정해 보세요.

  • 위치 2에 "1 + 서수 날짜"를 사용하고 싶습니다.
  • 역 이름은 "_"로 채워집니다.
  • 채널 이름 소문자

그러면 필요한 변환이 수행됩니다.

$ ls
2007-07-22-2300-11S.NAN___024_ABI___HH_E_SAC
$ for i in *; do
    od="$(expr $(date +%j -d "${i:0:10}") + 1 )";
    chn="${i:39:1}";
    sta="$(echo ${i:30:6} | tr -d '_')";
    mv "$i" "${i:0:4}.$od.${i:11:2}.${i:13:2}.$sta.${chn,,}" ;
  done 
$ ls
2007.204.23.00.ABI.e

답변2

대량 이름 바꾸기의 경우 prename친구입니다. 이 경우:

prename 's/^(\d*)-(\d*-\d*)-(\d*)-.*___\d*_(\w*)___\w*_(\w*)_\w*/$1.$2.$3.$4.$5/' *

(해당 질문이 명확해질 때까지 율리우스력 날짜를 무시하십시오).

관련 정보