Batch renomeia o arquivo para remover tudo após o &

0

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

    
por right2clicky 16.06.2017 / 18:50

2 respostas

0

Resolveu com:

rename 's/&.*//' *
    
por 16.06.2017 / 19:02
0

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.

    
por 16.06.2017 / 19:06