Versuch, bestimmte Dateien rekursiv zu finden und den Dateinamen zu ändern

Versuch, bestimmte Dateien rekursiv zu finden und den Dateinamen zu ändern

Ich versuche, rekursiv in allen Unterordnern nach Dateien zu suchen, deren Dateinamen Punkte enthalten, und diese Punkte zu entfernen (außer dem letzten).

Der Befehl „rename“ funktioniert allein und der Befehl „find“ auch, aber sie funktionieren nicht zusammen:

find ./ -type f -execdir rename -n 's/\.(?=[^.]*\.)//g' *.txt \;

Antwort1

Ein Glob in einem -execdirBefehl funktioniert nicht. Lassen Sie ihn besser findnach den gewünschten Dateien suchen und renamenur diese ausführen:

find ./ -type f -name "*.txt" -exec rename -n 's/\.(?=[^.]*\.)//g' {} \;

Es stellt sich heraus, dass Ihr renameAusdruck nicht mit Pfaden funktioniert. Versuchen Sie stattdessen Folgendes:

find ./ -type f -name "*.txt" -exec rename -n 's:\.(?=[^./]*\.)::g' {} \;

verwandte Informationen