
일부 파일 이름에서 하이픈이 없는 GUID를 바꾸려고 합니다.
정규식을 완료했지만 올바른 이스케이프 명령이나 대체 명령이 서로 작동하지 않는 것 같습니다.
내 정규식은 다음과 같습니다
https://regex101.com/r/SiqsjP/1
(-[0-9a-f]{32})
이와 같은 파일 이름으로
iPhone6Plus-learn_multi_child-0dfb2dc71fe20da66ca47190d3136b12.png
나는 이 답변을 보았습니다.파일 이름 내에서 하위 문자열을 찾아 제거하는 Bash 쉘 스크립트하지만 완전히 똑같지는 않아요...
나는 이것이 작동해야 한다고 생각하지만 오류에 대해 불평하지 않습니다.
newname=`echo "$filename" | sed -e 's/\([0-9a-f]{32}\)\.png/\1.png/'`
답변1
~ 안에sed 브레(기본 정규식) 중괄호도 이스케이프해야 합니다 {}
.
newname=`echo "$filename" | sed 's/-[0-9a-f]\{32\}//g'`
파일을 이동하거나 이름을 바꾸려면:
mv "$filename" "$newname"
답변2
셸에서 문자열 조작 사용:
for name in *.png; do
# remove everything after the last '-' including the dash
# and add the '.png' extension back
newname="${name%-*}.png"
echo mv "$name" "$newname"
done
이는 이름을 바꾸려는 모든 파일이 .png
현재 디렉터리에 있는 파일이라고 가정합니다.
이것을 한 번 실행하고 echo
올바른 일을 하고 있는 것처럼 보이면 제거하십시오.