3 Stimmen

Shell-Skripting - Ausführen einer Regex, um eine Datei an Ort und Stelle zu ändern, die den Dateinamen enthält

Ich habe viele Html-Dateien mit den Namen 12345.html, 12346.html, usw. Ich muss "style.css" in "style-12345.css" oder den entsprechenden Dateinamen ändern. Ich bin mir nicht sicher, welches Tool ich verwenden soll, Empfehlungen?

3voto

Michael Mrozek Punkte 160867

Dies ist ziemlich einfach mit einer for-Schleife und sed möglich:

for i in *.html; do
    sed -i "s/style\\.css/style-`basename $i .html`.css/g" $i
done

Die Schleife führt den inneren Befehl mit $i auf jeden .html-Dateinamen gesetzt. sed -i ändert die Datei an Ort und Stelle. basename $i .html erhält $i ohne die .html Suffix (d.h. nur die Nummer)

1voto

Craig Trader Punkte 15283

Suchen Sie nach einem Befehl namens rename . Es gibt sie in zwei Varianten, je nach Ausführung.

En perl Paket bietet /usr/bin/prename der reguläre Ausdrücke im Perl-Stil verwendet, um Dateien umzubenennen. Ein Beispiel dafür ist dieser Befehl

$ prename 's/foo/bar/ *foo* 

würde in jedem Dateinamen, der "foo" enthält, "foo" in "bar" ändern.

En util-linux Paket bietet /usr/bin/rename das zum Umbenennen von Dateien eine einfache Stringsubstitution verwendet. Ein Beispiel ist dieser Befehl

$ rename foo bar *foo*

würde die gleiche Wirkung haben wie die erste.

prename ist viel leistungsfähiger als die normale rename aber diese Macht bedeutet, dass sie schwieriger zu benutzen ist.

0voto

perl -pi -e 's/style.css/style-12345.css/g' *.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X