다음과 같은 이름 세부정보를 가진 파일이 많이 있습니다..
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/' *
(해당 질문이 명확해질 때까지 율리우스력 날짜를 무시하십시오).