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

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

10 ответов

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

OS X имеет Rename Files… пункт контекстного меню, который вызывается при выборе двух или более файлов в Finder. Обеспечивает ту же функцию, что и ответ Automator выше. Хотя Automator предоставляет вам инструменты, чтобы идти дальше, если хотите.

(Я знаю, что ОП попросил Терминал, но 33 других как ответ Automator)

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

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

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

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

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

Редактировать: полностью переписан.

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, будут перезаписаны, используйте их осторожно ^^

Другие вопросы по тегам