내가 가진 많은 의 .xml
파일이 동일한 방식으로 구성 :
<parent id="idvalue" attr1="val1" attr2="val2" ...>
<child attr3="val3" attr4="val4" ... />
<child attr3="val5" attr4="val6" ... />
...
</parent>
각 파일에는 정확히 <parent>
하나의 id
속성을 가진 정확히 하나의 요소가 있습니다.
이러한 모든 파일 (거의 1,700,000 개)은 part.xxxxx로 이름이 지정됩니다. 여기서 xxxxx는 임의의 숫자입니다.
파일 콘텐츠 idvalue.xml
의 유일한 id
속성 에 따라 각 파일의 이름을으로 지정하고 싶습니다 .
bash 스크립트로 수행하는 것이 가장 빠르고 자동화 된 방법이라고 생각합니다. 그러나 다른 제안이 있으면 듣고 싶습니다.
내 주요 문제는 idvalue
특정 파일에서 를 가져올 수 없다는 것입니다 (방법을 모릅니다) . 그래서 mv file.xxxxx idvalue.xml
명령 과 함께 사용할 수 있습니다 .
먼저 다음을 사용하여 xml 파일을 반복합니다 find
.
find -maxdepth 1 -name 'part*.xml' -exec ./rename_xml.sh {} \;
위의 줄 rename_xml.sh
은 모든 xml 파일에 대해 실행 되며 파일 이름을 명령 인수로 스크립트에 전달합니다.
rename_xml.sh
다음과 같아야합니다.
#!/bin/bash
// Get the id using XPath. You might probably need
// to install xmllint for that if it is not already present.
// The xpath query will return a string like this (try it!):
//
// id="idvalue"
//
// We are using sed to extract the value from that
id=$(xmllint --xpath '//parent/@id' "$1" | sed -r 's/[^"]+"([^"]+).*/\1/')
mv -v "$1" "$id.xml"
잊지 마세요
chmod +x rename_xml.sh
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다