Как я могу переименовывать файлы с помощью терминала?

У меня есть набор файлов, все из них nnn.MP4.mov, как я мог переименовать их так, чтобы это было просто nnn.mov?

Ответ 1

Сначала выполните сухой прогон (фактически не переименуйте файлы) со следующим:

for file in *.mov
do
  echo mv "$file" "${file/MP4./}"
done

Если все выглядит нормально, удалите echo из третьей строки, чтобы фактически переименовать файлы.

Ответ 2

Я просто успешно использовал Automator (первый раз, когда я беспокоился), и он работает очень хорошо. Я сохранил автоматизацию как Сервис. Потребовалось около 10 секунд, чтобы сделать что-то легко повторное использование:

  • Открыть Automator.
  • В качестве типа документа выберите "Сервис".
  • Служба изменений получает выбранный "текст" в "файлы и папки".
  • Рассмотрите возможность изменения "любого приложения" только на Finder.
  • На боковой панели выберите "Файлы и папки" (в разделе "Библиотека" ) и из перечисленных действий в центральном столбце перетащите "Переименовать элементы Finder" в нужную сторону и опустите его в "Перетащите действия или файлы здесь, чтобы построить ваш рабочий процесс."
  • Измените действие, которое вы только что добавили, из "Добавить дату или время" в "Сделать последовательный".
  • Нажмите "Параметры" внизу действия и установите флажок "Показывать это действие при запуске рабочего процесса".
  • Нажмите "CMD + S", чтобы сохранить службу как нечто вроде "Заменить текст".
  • Готово!

Теперь вы можете щелкнуть правой кнопкой мыши любой выбор в Finder, перейдите в меню "Сервис" и выберите "Заменить текст", заполните то, как вы хотите, чтобы текст был изменен или заменен - ​​и нажмите "Продолжить", чтобы применить настроенные изменения.

Ответ 3

Чтобы проверить печать операции:

for file in *.MP4.mov; do j=`echo $file | cut -d . -f 1`;j=$j".mov";echo mv \"$file\" \"$j\"; done

Чтобы он работал:

for file in *.MP4.mov; do j=`echo $file | cut -d . -f 1`;j=$j".mov";mv "$file" "$j"; done

Ответ 4

for n in *.MP4.mov
do
   mv $n $(echo $n | sed -e 's/.MP4//')
done

Это будет работать даже на действительно старых оболочках, у которых нет замены параметров, и это, по крайней мере, немного читаемо для моих глаз.

Ответ 5

В Mac OSX вы можете установить команду rename через Homebrew: brew install rename

Затем вы можете переименовать, используя find/replace из этой папки в командной строке:

rename 's/\.MP4\././' *

Вы также можете увидеть больше параметров, используя man rename.

Ответ 6

for i in `ls *png`;do echo mv $i "${i%%.*}"@xx."${i##*.}";done

Ответ 7

vimv позволяет переименовывать несколько файлов с помощью возможностей редактирования текста Vim.

Ввод vimv открывает окно Vim, в котором перечислены все файлы, и вы можете выполнять сопоставление образцов, визуальный выбор и т.д., чтобы редактировать имена. После выхода из Vim файлы будут переименованы.

[Отказ от ответственности: я автор этого инструмента]

Ответ 8

ls -1 *.MP4.mov | while read f; do mv -i "$f" "$(basename \"$f\" .MP4.mov)"; done

Изменить: полностью перезаписано.

Ответ 9

for i in *; 
do j=`echo $i | cut -d . -f 1`; 
j=$j".mov";
mv $i $j; 
done

это вырезает все до первой точки и добавляет .mov

но если некоторые файлы являются, например, hi.2.mov и hi.1.mov один будет перезаписан, поэтому используйте его осторожно ^^