Как я могу переименовать файлы с помощью терминала?
У меня есть набор файлов, все они nnn.MP4.mov
как я мог переименовать их так, чтобы это было просто nnn.mov
?
10 ответов
Сначала выполните пробный запуск (фактически не будет переименовывать какие-либо файлы) с помощью следующего:
for file in *.mov
do
echo mv "$file" "${file/MP4./}"
done
Если все выглядит хорошо, удалите echo
с третьей строки, чтобы фактически переименовать файлы.
Я только что успешно использовал Automator (впервые мне это надоело), и он работает очень хорошо. Я сохранил автоматизацию как сервис. Потребовалось около 10 секунд, чтобы сделать что-то многократно используемое:
- Откройте Automator.
- В качестве типа документа выберите "Сервис".
- Служба изменения получает выбранный "Текст" на "файлы и папки".
- Попробуйте изменить "любое приложение" на Finder.
- На боковой панели выберите "Файлы и папки" (в разделе "Библиотека") и из перечисленных действий в центральном столбце перетащите "Переименовать элементы Finder" на правую сторону и поместите его в поле "Перетащите действия или файлы сюда, чтобы создать рабочий процесс". "
- Измените только что добавленное действие с "Добавить дату или время" на "Сделать последовательным".
- Нажмите "Параметры" в нижней части действия и установите флажок "Показать это действие при запуске рабочего процесса".
- Нажмите "CMD+S", чтобы сохранить службу как "Заменить текст".
- Готово!
Теперь вы можете щелкнуть правой кнопкой мыши любой элемент в 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, будут перезаписаны, используйте их осторожно ^^