Benennen Sie mehrere Ordner mit regulären Ausdrücken um

Benennen Sie mehrere Ordner mit regulären Ausdrücken um

Wie der Titel schon sagt, suche ich nach einem Befehl/Tool – vorzugsweise etwas, das vom Terminal aus ausgeführt werden kann (ich verwende Ubuntu auf einem Remote-Server) und das einen bestimmten Teil mehrerer Verzeichnisse gleichzeitig ersetzen kann. Die Ordnerstruktur sieht folgendermaßen aus:

Example.of.Structure[app]

Another.Example[app]

Third.Example.of.Structure[app]

Und ich möchte alle Ordner umbenennen, sodass der Teil [app] aus den Ordnernamen entfernt wird.

Ich habe versucht, mich mit grundlegenden regulären Ausdrücken zu beschäftigen. Dabei habe ich die eckigen Klammern mit dem Text darin abgeglichen.

Das scheint gut zu funktionieren, wenn ich es verwende für"es finden"- aber ich bin wirklich nicht sicher, wie ich es in einen Befehl einfügen soll.

Der reguläre Ausdruck, den ich mir ausgedacht habe, um den Text innerhalb der Klammern (einschließlich der Klammern selbst) zu finden, war:\[\w+\]

Aber wie setze ich dies in einen Befehl um?

Danke.

Antwort1

Dafür brauchen Sie nicht unbedingt einen regulären Ausdruck. Ein einfacher Shell-Glob plus Parametererweiterung reicht aus:

$ for f in *\[*\]/; do echo mv "${f}" "${f/\[*\]}"; done
mv Another.Example[app]/ Another.Example/
mv Example.of.Structure[app]/ Example.of.Structure/
mv Third.Example.of.Structure[app]/ Third.Example.of.Structure/

(Entfernen Sie es, echosobald Sie mit den vorgeschlagenen Ersetzungen zufrieden sind).

Wenn Sie ein auf regulären Ausdrücken basierendes Tool verwenden möchten, rename/prenameist das Perl-basierte die naheliegende Wahl:

$ rename -n 's/\[\w+\]//' */
rename(Another.Example[app]/, Another.Example/)
rename(Example.of.Structure[app]/, Example.of.Structure/)
rename(Third.Example.of.Structure[app]/, Third.Example.of.Structure/)

(Entfernen Sie es, -nsobald Sie mit den vorgeschlagenen Ersetzungen zufrieden sind).

Beide entsprechen demErsteVorkommen des Musters. Wenn die Möglichkeit besteht, dass das [app]Muster auch woanders vorkommen kann, sollten Sie die Übereinstimmung am Ende des Musters verankern. SieheAnker für den Beginn und das Ende der Zeichenfolge

verwandte Informationen