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 -execdir
Befehl funktioniert nicht. Lassen Sie ihn besser find
nach den gewünschten Dateien suchen und rename
nur diese ausführen:
find ./ -type f -name "*.txt" -exec rename -n 's/\.(?=[^.]*\.)//g' {} \;
Es stellt sich heraus, dass Ihr rename
Ausdruck nicht mit Pfaden funktioniert. Versuchen Sie stattdessen Folgendes:
find ./ -type f -name "*.txt" -exec rename -n 's:\.(?=[^./]*\.)::g' {} \;