기본적으로 작은 아이콘인 수백 개의 SVG 파일이 포함된 디렉토리가 있습니다. 파일 이름을 콘텐츠로 사용하여 각 아이콘에 요소를 추가 <title>icon name</title>
하고 모든 하이픈을 공백으로 바꾸고 확장자를 제거하고 싶습니다.
예를 들어 파일은 다음과 같습니다 arrow-down-narrow.svg
.
<svg width="21" height="21" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M10.5 3.625a.75.75 0 0 1 .743.648l.007.102v10.438l2.22-2.218a.75.75 0 0 1 1.133.976l-.073.084-3.5 3.5a.754.754 0 0 1-.078.069l-.006.004h-.002l-.008.007a.747.747 0 0 1-.081.051l-.015.008a.744.744 0 0 1-.11.045l-.009.003a.707.707 0 0 1-.221.033h-.028a.754.754 0 0 1-.046-.004l-.028-.003-.012-.002a.752.752 0 0 1-.085-.018l-.025-.007a.747.747 0 0 1-.068-.025l-.028-.012a.744.744 0 0 1-.21-.149l-3.5-3.5a.75.75 0 0 1 .976-1.133l.084.073 2.22 2.219V4.375a.75.75 0 0 1 .75-.75z" fill="#000" fill-rule="nonzero"/></g></svg>
이상적으로 이 업데이트는 다음 마크업을 생성합니다.
<svg width="21" height="21" xmlns="http://www.w3.org/2000/svg"><title>arrow down narrow</title><g fill="none" fill-rule="evenodd"><path d="M10.5 3.625a.75.75 0 0 1 .743.648l.007.102v10.438l2.22-2.218a.75.75 0 0 1 1.133.976l-.073.084-3.5 3.5a.754.754 0 0 1-.078.069l-.006.004h-.002l-.008.007a.747.747 0 0 1-.081.051l-.015.008a.744.744 0 0 1-.11.045l-.009.003a.707.707 0 0 1-.221.033h-.028a.754.754 0 0 1-.046-.004l-.028-.003-.012-.002a.752.752 0 0 1-.085-.018l-.025-.007a.747.747 0 0 1-.068-.025l-.028-.012a.744.744 0 0 1-.21-.149l-3.5-3.5a.75.75 0 0 1 .976-1.133l.084.073 2.22 2.219V4.375a.75.75 0 0 1 .75-.75z" fill="#000" fill-rule="nonzero"/></g></svg>
가능합니까?
나는 이것을 가지고 놀고 있는데 올바른 길로 가고 있는 것 같지만 sed를 완전히 처음 접했고 오류가 발생했습니다 sed: RE error: illegal byte sequence
.
find . -name "*" -type f -print | xargs sed -i '' -e 's:svg">:svg">HELLO:g'
답변1
이것은 간단한 해결책입니다. pwd에서 모든 svg 파일을 검색합니다. 첫 번째 > 문자를 > + 제목 태그 정보로 바꿉니다. find의 파일 이름 ./
앞에는 $f
.
OP에서 제안한 것처럼 모든 svg 파일이 svg 태그로 시작하면 작동합니다. 파일 이름의 공백에는 작동하지 않습니다.
앞으로
<svg width="21" height="21" xmlns="http://www.w3.org/2000/svg"><g fill="none"...
뒤쪽에
<svg width="21" height="21" xmlns="http://www.w3.org/2000/svg"><title>test.svg</title><g fill="none"...
하나의 svg 파일만 사용하여 이를 테스트했습니다. 원본 파일을 백업하세요. svg 디렉토리의 명령:
find . -iname '*.svg' -exec bash -c 'f=$(printf $0|sed s_./__);sed -i s_\>_\>\<title\>$f\<\/title\>_ $0' {} \;