
ich habe viele Befehle ausprobiert. Keiner hat funktioniert. Wie kann ich mit „rename/find“ oder etwas anderem rekursiv eine Zeichenfolge am Anfang von Dateien in Unterordnern hinzufügen?
Beispielfile.jpg --> image_file.jpg
find . -name '*.jpg' -exec rename -n "s/^/image_/" *.jpg {} +
for pic in '*.jpg' ; do rename -n "s/^/image_/ ${pic}"; done
find . -name '*.jpg' -exec rename -n "s/^/image_/ .jpg '{}' \;
find "/files/" -type f -exec rename 's/^/image_/' '{}' \;
find . -name '*.jpg' -type f -exec bash -c 'echo "$1" "${1/^/image_/}"' -- {} \;
warum heißt dasInvalid cross-device link
find . -name '*.jpg' -execdir rename 's:./:/image_:' {} +
Antwort1
Ich habe es gefunden! Dieser Befehl fügt am Anfang jeder Datei rekursiv in allen Unterverzeichnissen eine Zeichenfolge hinzu. Ich weiß noch nicht, warum es funktioniert, aber es funktioniert. Verwenden Sie '-n', um tatsächliche Ergebnisse zu erzielen.
find . -name '*.jpg' -execdir rename -n 's:./:./image_:' {} +
Beispiel für ein Ergebnis:rename(./28652316400.jpg, ./image_28652316400.jpg)
s
bedeutet Ersatz.:
so wie ich es verstanden habe, bedeutet es, zum ersten Vorkommen von „.“ zu gehen, dann, während Sie zu „.“ gegangen sind, durch „image_“ zu ersetzen und zu beenden. (Ich kann mich jedoch irren). Lesen SieHierMehr zur Bedeutung des Doppelpunkts in Bash und Skripten.