
와 같은 이름을 가진 파일로 가득 찬 디렉토리가 거의 500개 있는데 e141107140847.pdf
, 과 같은 사용자 친화적인 이름으로 이름을 바꿔야 합니다 2014_11_SDUXS_0847.pdf
. for 루프와 sed를 사용하려고 노력했지만 머리가 복잡해서 모든 것을 하나로 묶는 방법을 알 수 없습니다. 또한 rename
이 컴퓨터(FreeBSD)의 명령 에 액세스할 수 없습니다 .
매핑은 다음과 같습니다.
e
— 제거할 쓰레기 문자14
—로 번역됩니다SDUXS
. 처리해야 할 매핑이 36개 있습니다.11
- 월07
— 일, 제거 예정14
— 연도, 4자리로 변환됩니다.0847
— 위치 코드, 보관됨.
답변1
구체적인 예를 들어 이것을 함께 두드리면 다음과 같습니다.
#!/bin/bash
filename='e141107140847.pdf'
echo Given file name ${filename} -
case ${filename:1:2} in
14)
mapping="SDUXS"
;;
*)
mapping="XXXXX"
;;
esac
month="${filename:3:2}"
year="20${filename:7:2}"
location="${filename:9:4}"
echo New filename - ${year}_${month}_${mapping}_${location}.pdf
원하는 결과를 제공하는 것 같습니다. case..esac
모든 매핑에 대한 문을 확장 하고 a로 묶으면 for filename in *.pdf
출력을 확인할 수 있습니다. 그런 다음 다음으로 변경하십시오 echo
.
mv "$filename" "${year}_${month}_${mapping}_${location}.pdf"