Добавить префикс к файлам в папке

Обновлено: 04.07.2024

добавить префикс ко всем файлам, оканчивающимся на .jpg (и если я удалю .jpg , он добавит префикс ко всем файлам в текущей папке).

Тем не менее, я хотел бы иметь возможность

  • Добавить суффикс (то есть переименовать filename.ext в filename.whatever.ext ),
  • Проверьте, если префикс или суффикс уже присутствует, а затем пропустите,
  • Создайте псевдоним, который принимает аргументы, такие как addprefix whatever *.ext или addsufix whatever *.*

Если вы используете bash , то этот однострочный может сделать это для вас (при условии, что у вас есть переменные $prefix , $suffix и $extension легко доступны)

Вы можете сделать так, чтобы ваши сценарии были такими

Это почти идеально! Было бы идеально, если бы он (1) проверил, присутствует ли префикс или суффикс (и затем пропущен), и (2) работал с файлами без расширения. Извините за беспокойство . Для (1) вы можете (я думаю, не проверено) добавить проверку префикса, обернув mv в, if [ $f == $prefix* ] и вы можете изменить суффикс с if [ $f == *$suffix$([ ! -z $extension ] && echo -n '.')$extension ] парой команд mv в adduffix. Для (2) он уже должен работать с файлами без расширения, если я не ужасный программист.

Есть команда Perl, rename которая должна сработать. Однако будьте осторожны: вызывается несколько разных команд rename , поэтому убедитесь, что у вас есть скрипт Perl, который ожидает в perlexpr качестве аргумента a . Это rename команда, предоставляемая perl пакетом для Debian и производных (Ubuntu, Mint,…), но не для других дистрибутивов, которые могут иметь другую утилиту rename .

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

Он работает либо заменой начала (нулевой длины) строк ( ^ ), либо начала, за которым следует необязательная prefix строка с prefix .

Я оставлю инкапсуляцию этого в сценарии оболочки или функции оболочки в качестве упражнения для вас :)

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

Чтобы быстро находить файлы и бегло ориентироваться в них, недостаточно разложить всё по правильным папкам. Не менее важно присвоить файлам легко читаемые и осмысленные имена. Возиться с каждым из них по отдельности — контрпродуктивно. Поэтому существуют способы группового переименования.

Для работы с группой файлов лучше скопировать их в отдельную папку. Это существенно упростит процесс.

С помощью штатных средств Windows

Изменяем имена файлов

Рассмотрим самый простой случай: у нас есть n-ое количество изображений с ни о чём не говорящими названиями.

Приведём имена этих файлов к наглядному виду Picture (n), где Picture будет названием, а n — порядковым номером. Это можно легко сделать прямо в «Проводнике».

Выделяем все картинки, которые хотим переименовать. Чтобы сделать это быстро, используем комбинацию клавиш Ctrl + A. Затем просто жмём F2 или кликаем правой кнопкой мыши на первом файле и выбираем «Переименовать». В качестве имени для выделенного изображения вводим слово Picture и нажимаем Enter.

Windows автоматически присвоит такое же имя всем последующим файлам и расставит все порядковые номера.

При необходимости вы можете отменить массовое переименование комбинацией клавиш Ctrl + Z.

Если захотите переименовать группу папок в «Проводнике», то это можно сделать точно так же.

Изменяем расширения файлов

Допустим, у нас есть несколько текстовых документов, которые после двойного клика открываются блокнотом. Но нам нужно, чтобы по умолчанию они открывались браузером. Для этого придётся изменить их расширение с .txt на .html. Операции такого рода можно быстро выполнять с помощью командной строки.

Нажимаем клавиши Windows + R, вводим в появившемся поле cmd и кликаем ОК — видим окно командной строки. Теперь вставляем в него путь к папке, в которой лежат наши файлы, сразу после команды cd: cd C:\Users\Max Volotsky\Desktop\Docs , и жмём Enter. Затем используем специальную команду, которая изменит их расширения: rename *.txt *.html , и снова нажимаем Enter.

Первым в команде указывается исходное расширение, вторым — новое. После ввода команды система мгновенно вносит изменения.

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

С помощью сторонних утилит

Никакие встроенные инструменты не сравнятся по функциональности со специальными программами, разработанными специально для пакетного переименования. В Сети можно найти множество таких бесплатных утилит, достаточно ввести в поиске bulk file rename.

Мы рассмотрим переименование на примере программы Bulk Rename Utility. С её помощью очень удобно изменять имена папок и файлов, а также расширения последних.

При первом запуске может показаться, что интерфейс утилиты пришёл прямо из ада и, возможно, в этом есть доля правды. Зато пользователю не нужно переходить по многочисленным вкладкам и меню: он получает доступ ко всем функциям из одного окна.

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

Запускаем приложение и через встроенный файловый менеджер переходим в нужную нам папку. Далее, уже знакомым сочетанием клавиш Ctrl + A выделяем все файлы. Нам нужно удалить первые 3 символа в начале имени каждого файла и дописать название исполнителя в самом начале. Для этого указываем необходимые параметры на панелях Remove и Add, после чего жмём Rename.

Теперь сделаем так, чтобы все расширения состояли из символов в нижнем регистре: на панели Extension выбираем вариант Lower и нажимаем Rename.

Как видите, в окне программы доступны и другие панели. К примеру, Numbering позволяет нумеровать документы различными способами, а с помощью Case можно менять регистр символов в именах файлов. Благодаря столбцу New Name во встроенном проводнике, который показывает результат переименования ещё до его применения, вы легко разберётесь в остальных инструментах Bulk Rename Utility.

Последнюю операцию с файлами и папками, выполненную в программе, можно легко отменить комбинаций клавиш Ctrl + Z.

Четыре способа группового переименования файлов в Windows

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

В Проводнике есть довольно неочевидный способ быстро переименовывать группы файлов. Для начала соберите все нужные файлы в одну папку. Переключитесь на вид «Таблица» (Details) и отсортируйте файлы в необходимом порядке – Проводник присваивает номера по списку начиная сверху.

Четыре способа группового переименования файлов в Windows

Выделите все файлы, которые требуется переименовать, нажмите правой кнопкой мыши и выберите пункт «Переименовать» (Rename). Введите новое имя и нажмите [Enter].

Четыре способа группового переименования файлов в Windows

Проводник добавит к этому имени номер для каждого файла. Удобный способ привести все файлы к одному знаменателю, хотя и не слишком гибкий.

Четыре способа группового переименования файлов в Windows

Командная строка

В командной строке можно использовать команду rename или ren для массового переименования файлов. Можно задействовать групповой символ * для обозначения множества файлов разом.

Самый простой способ открыть окно командной строки в нужной папке – зажать [Shift], нажать на папке правой кнопкой мыши и выбрать «Открыть окно команд» (Open command window here).

Четыре способа группового переименования файлов в Windows

Чаще всего командное переименование используют для изменения расширения у целой группы файлов – в Проводнике так сделать нельзя. Приведенная ниже команда, например, превращает все файлы .html в .txt:

Четыре способа группового переименования файлов в Windows

Сама по себе команда не очень функциональная, но ее можно применять в сложных сценариях.

Четыре способа группового переименования файлов в Windows

PowerShell предлагает гораздо больше возможностей переименования файлов в командной среде. С помощью PowerShell можно передать вывод одной команды (командлета, как это здесь называется) другой команде, точно так же, как в Linux и других UNIX-подобных системах.

Главные команды – это Dir для получения списка файлов в текущей папке и Rename-Item для переименования объекта (в данном случае файла). Достаточно передать вывод Dir команде Rename-Item – и готово.

Четыре способа группового переименования файлов в Windows

После запуска PowerShell используйте команду cd для перехода в папку с нужными файлами. Лучше всего переложить все файлы в одну папку, чтобы не переименовать нечаянно лишнее.

Четыре способа группового переименования файлов в Windows

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

Четыре способа группового переименования файлов в Windows

Приведенная ниже команда выводит список файлов в текущей папке и передает его команде Rename-Item, а та заменяет все пробелы на подчеркивания.

Четыре способа группового переименования файлов в Windows

Можно заменить “ “ и “_” на другие символы, чтобы переименовать файлы по-другому.

Четыре способа группового переименования файлов в Windows

Подробнее об использовании Rename-Item для выполнения более сложных операций можно прочитать в документации Microsoft .

Сторонние утилиты

Если требуется мощный инструмент для массового переименования файлов, а с командной строкой возиться не хочется, можно использовать сторонние утилиты, например Bulk Rename Utility. Правда, интерфейс у этого приложения довольно запутанный, поскольку дает массу возможностей, которые обычно достижимы только с использованием регулярных выражений и сложных команд.

После установки приложения найдите и выделите файлы для переименования.

Четыре способа группового переименования файлов в Windows

Измените настройки в одной или нескольких панелях – и увидите предварительные результаты изменений в столбце «New Name» («Новое имя»). Допустим, мы хотим убрать все, кроме цифр, и оставить в именах картинок только номера. Можно задать в панели «Remove» («Убрать») удаление первых десяти символов и одного последнего.

Четыре способа группового переименования файлов в Windows

После этого достаточно нажать кнопку «Rename» («Переименовать») для применения изменений.

А может быть, вы предпочитаете какое-нибудь другое приложение для массового переименования файлов? Расскажите в комментариях!

Автор: Chris Hoffman
Перевод SVET


Оцените статью: Голосов

Я хотел бы пакетно переименовать файлы в папке, добавив имя папки в новые имена. т.е. все файлы в C:\house chores\ будут переименованы в house chores - $old_name .

Вариант 1. Использование Windows PowerShell

Откройте меню окон. Введите: «PowerShell» и откройте командное окно «Windows PowerShell».

Перейдите в папку с нужными файлами: например, cd "C:\house chores" Примечание: адрес должен содержать кавычки "", если есть пробелы.

Вы можете использовать «dir», чтобы увидеть все файлы в папке. Используя '|' передаст вывод 'dir' для следующей команды.

Примечания: dir - это псевдоним Get-ChildItem. Смотрите: wiki: cmdlets . Можно обеспечить дополнительную функциональность. например 'dir -recurse' выводит все файлы, папки и подпапки.

Что если я хочу только диапазон файлов?

Вместо «dir |» Я могу использовать:

Для пакетного переименования с именем каталога в качестве префикса:

Вариант 2: Использование командной строки

В папке нажмите Shift + правый клик: выберите «Открыть командное окно здесь»

Если файлов много, было бы хорошо добавить команду «@echo off» перед этим и команду «echo on» в конце.

Проблема с двумя ответами Powershell здесь заключается в том, что префикс может в конечном итоге дублироваться, так как сценарий потенциально может выполняться над файлом как до, так и после того, как он был переименован, в зависимости от того, какой каталог восстанавливается при выполнении процесса переименования. Чтобы обойти это, просто используйте опцию -Exclude :

Это не позволит процессу переименовать какой-либо один файл более одного раза.

Смотрите скриншоты и учебник на оригинальном сайте.

Я не могу предоставить пошаговые снимки экрана, так как изображения должны быть выпущены в соответствии с Creative Commons License , и я не являюсь владельцем снимков экрана программного обеспечения.

Отказ от ответственности: Я никоим образом не связан с указанным программным обеспечением/компанией. Мне понравился продукт для моей собственной задачи, он обслуживает OP и аналогичные требования, поэтому рекомендую.

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

Я рвал волосы, потому что для некоторых элементов переименованный элемент снова переименовывался (неоднократно, если не была достигнута максимальная длина имени файла). Это происходило как для Get-ChildItem, так и для передачи вывода dir. Я предполагаю, что переименованные файлы были подобраны из-за изменения в алфавитном порядке. Я решил эту проблему следующим образом:

Это «блокирует» результаты, возвращаемые Get-ChildItem в переменной $ dirs, и вы можете перебирать ее, не опасаясь, что порядок изменится или произойдет другая забавная работа.

Совет Dave.Gugg по использованию -Exclude также должен решить эту проблему, но это другой подход; возможно, если переименованные файлы уже содержат шаблон, используемый в префиксе.

(Отказ от ответственности: я очень похож на PowerShell n00b.)

На основе ответа @ ofer.sheffer эта команда будет массово переименована и добавит текущую дату к имени файла. то есть "file.txt" становится "20180329 - file.txt" для всех файлов в текущей папке

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

Читайте также: