Resolveu com:
rename 's/&.*//' *
Eu tenho um diretório cheio de arquivos como este:
Joe Schmidt Kapitel 10 - Teil 7.mp4 & content_uid = 359 & hash = 8353ee953b9bb79cebf58cc46d7dc085 & aleatório = 190644109
Um monte de material da web foi mantido no final ao baixá-los, agora eu gostaria de removê-lo assim:
Joe Schmidt Kapitel 10 - Teil 7.mp4
Estou no macOS, tenho o comando rename, etc.
Eu tentei o seguinte, mas não funcionou tão bem:
$ rename --verbose 's/\&\w*//' *
'Joe Schmidt' Kapitel 10 - Teil 7.mp4 & content_uid = 359 & hash = 8353ee953b9bb79cebf58cc46d7dc085 & random = 190644109 'renomeado para' Joe Schmidt 'Kapitel 10 - Teil 7.mp4 = 359 & hash = 8353ee953b9bb79cebf58cc46d7dc085 & aleatório = 190644109'
rename --verbose 's/\&\.*//' *
também não funcionou.
E, como há vários e-mails - quero matar tudo depois do primeiro e-comercial - não consigo nem usar o corte:
for i in $(find . -type f)
do
mv "$i" 'echo $i | cut -d "&" -f1'
done
produz:
mv: rename ./Joe to ./Joe: No such file or directory mv: rename Schmidt_ to Schmidt_: No such file or directory mv: rename Kapitel to Kapitel: No such file or directory mv: rename 10 to 10: No such file or directory mv: rename - to -: No such file or directory mv: rename Teil to Teil: No such file or directory mv: rename 7.mp4&content_uid=359&hash=8353ee953b9bb79cebf58cc46d7dc085&random=190644109 to 7.mp4: No such file or directory
Resolveu com:
rename 's/&.*//' *
Não é elegante, mas deve funcionar. A magia está nas citações:)
ls *\&* | (
while read F
do
TGT="$(echo $F | cut -d'&' -f1)"
echo mv "$F" "$TGT"
done
)
Remova o echo
para armar esse script.
Tags rename batch-rename unix macos