Ich musste 500 Kopien einer XML-Datei in dem Verzeichnis erstellen, was ich fertig brachte. Als Teil des nächsten Problems möchte ich einen bestimmten Text in der Datei umbenennen. Wie kann ich es tun?Benennen Sie eine bestimmte Instanz in mehreren Dateien mit dem Dateinamen um?
Das ist, was ich habe: 1000.xml, 1001.xml, 1002.xml ...
1000.xml:
<?xml version="1.0" encoding="UTF-8"?>
<addresses xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation='test.xsd'>
<address>
<name>Joe Tester</name>
<street>Baker street 5</street>
<id>1000</id>
</address>
<count>1000</count>
Im Wesentlichen wird dies kopiert alle anderen Dateien, aber mit einem numerischen und chronologischen Namen. Wie ersetze ich dieses "1000" durch den "Dateinamen"? So sollte die neue Datei sein - 1001.xml:
<?xml version="1.0" encoding="UTF-8"?>
<addresses xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation='test.xsd'>
<address>
<name>Joe Tester</name>
<street>Baker street 5</street>
<id>1001</id>
</address>
<count>1001</count>
</addresses>
Ich konnte dies nur - sed -i '' -e 's/1000/1001/g' $(find . -type f)
, die alle die 1000 mit 1001 ersetzen werden, aber nicht die Dateinamen.
Und was hast du bisher versucht? Dies scheint eine ziemlich einfache Shell-Skriptaufgabe zu sein. Vielleicht eine 'for' Schleife? – larsks
Ich postete den sed-Befehl, den ich mir vorstellen konnte. Aber es benennt alle 1000 zu 1001. Es sollte jedoch 1002 in Datei 1002.xml, 1003 in 1003.xml und so weiter sein. – Metahuman