Ich versuche, bestimmte Dateien mit dem Namen „stringx“ zu finden und den Namen (aber nicht die Erweiterung) durch „stringy“ zu ersetzen. Also im Grunde würde ich für stringx.txt und stingx.cs stringy.txt und stringy.cs wollen. Ich habe versucht, meine Umbenennungsbefehlsregex mit folgendem zu testen, aber es gibt keine Ergebnisse zurück:
rename -n 'stringx./s/*$stringy.//' stringx.*
Ich verwende csh unter Centos. Ich kann sehen, dass meine Regex wahrscheinlich nicht korrekt ist, aber ich kann keine Ergebnisse sehen, um dies zu überprüfen. Ich kann sehen, dass es Dateien mit dem Namen stringx gibt. mit folgendem:
find ./ -name 'stringx.*'
Akzeptierte Antwort:
rename stringx stringy stringx.*
Es gibt (mindestens) zwei Dienstprogramme namens rename
auf typischen Linux-Systemen. Debian und abgeleitete Distributionen (einschließlich Ubuntu) liefern ein Perl-Skript aus, dessen Syntax
rename 's/stringx/stringy/' stringx.*
Bei anderen Distributionen, einschließlich CentOS, rename
ist von util-linux, und seine Syntax ist die, die ich oben geschrieben habe. Dieses Dienstprogramm ist unter dem Namen rename.ul
verfügbar auf Debian und Derivaten.
Wenn Sie in Unterverzeichnissen rekursiv arbeiten wollen und davon ausgehen, dass Sie mit csh tcsh meinen (aber wirklich, denken Sie daran, Mitte der 1990er Jahre einzusteigen und zu zsh zu wechseln):
set globstar
rename stringx stringy stringx.* **/stringx.*