У меня есть каталог, полный файлов, как это:

Джо Шмидт Капитель 10 - Teil 7.mp4 & content_uid = 359 & hash = 8353ee953b9bb79cebf58cc46d7dc085 & random = 190644109

Куча веб-контента перестала загружаться, теперь я хотел бы удалить это так:

Джо Шмидт Капитель 10 - Teil 7.mp4

Я на macOS, есть команда переименования и т.д.

Я попробовал следующее, но это не сработало:

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

'Joe Schmidt_ Kapitel 10 - Teil 7.mp4 & content_uid = 359 & hash = 8353ee953b9bb79cebf58cc46d7dc085 & random = 190644109' переименован в 'Joe Schmidt_ Kapitel 10 - Teil 7.mp4 = 359 & hash = bbb59595953

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

тоже не работал

А поскольку есть несколько амперсандов - я хочу убить все после первого амперсанда - я даже не могу использовать вырезание:

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

производит:

mv: переименовать.Джо в./Joe: Нет такого файла или каталога mv: переименуйте Schmidt_ в Schmidt_: Нет такого файла или каталога mv: переименуйте Kapitel в Kapitel: Нет такого файла или каталога mv: переименуйте 10 в 10: Нет такого файла или каталога mv: rename - to -: Нет такого файла или каталога mv: переименовать Teil в Teil: Нет такого файла или каталога mv: переименовать 7.mp4 & content_uid = 359 & hash = 8353ee953b9bb79cebf58cc46d7dc085 & random = 190644109 to 7.mp4: Нет такого файла или каталога

2 ответа2

0

Решил это с помощью:

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

Не элегантно, но должно работать. Магия в кавычках :)

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

Пожалуйста, удалите echo чтобы активировать этот скрипт.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .