Batch umbenennen, um alles nach dem & zu entfernen

786
right2clicky

Ich habe ein Verzeichnis mit folgenden Dateien:

Joe Schmidt Kapitel 10 - Teil 7.mp4 & content_uid = 359 & hash = 8353ee953b9bb79cebf58cc46d7dc085 & random = 190644109

Am Ende wurde beim Download einiges an Web-Material aufbewahrt. Nun möchte ich es gerne so entfernen:

Joe Schmidt Kapitel 10 - Teil 7.mp4

Ich bin auf MacOS, habe den Umbenennungsbefehl usw.

Ich habe folgendes versucht, aber es hat nicht so gut funktioniert:

$ rename --verbose 's/\&\w*//' * 

'Joe Schmidt_ Kapitel 10 - Teil 7.mp4 & content_uid = 359 & hash = 8353ee953b9bb79cebf58cc46d7dc085 & random = 190644109' umbenannt in 'Joe Schmidt_ Kapitel 10 - Teil 7.mp4 = 359 & hash = 8353ee953b9bb79cebf58cc46d7dc085 & random = 190644109'

rename --verbose 's/\&\.*//' * 

funktionierte auch nicht.

Und da es mehrere Ampersands gibt - ich möchte alles nach dem ersten Ampersand töten - kann ich nicht mal cut verwenden:

for i in $(find . -type f) do mv "$i" `echo $i | cut -d "&" -f1` done 

produziert:

mv: Umbenennen von ./Joe in ./Joe: Keine solche Datei oder Verzeichnis. mv: Umbenennen von Schmidt_ in Schmidt_: Keine solche Datei oder Verzeichnis. mv: Umbenennen von Kapitel in Kapitel: Keine solche Datei oder Verzeichnis. mv: Umbenennen von 10 bis 10: Keine solche Datei oder Verzeichnis mv: umbenennen - in -: Keine solche Datei oder Verzeichnis mv: umbenennen Teil in Teil: Keine solche Datei oder Verzeichnis mv: umbenennen 7.mp4 & content_uid = 359 & hash = 8353ee953b9bb79ceb58cc46d7dc085 & random = 190644109 in 7.mp4: keine solche Datei oder Verzeichnis

0

2 Antworten auf die Frage

0
right2clicky

Gelöst mit:

rename 's/&.*//' * 
0
jvb

Nicht elegant, sollte aber funktionieren. Der Zauber ist in den Zitaten :)

ls *\&* | ( while read F do TGT="$(echo $F | cut -d'&' -f1)" echo mv "$F" "$TGT" done ) 

Bitte entfernen Sie das, echoum dieses Skript zu aktivieren.