Переименовать файлы маске linux

Переименовать файлы маске linux

При выполнении операций копирования и перемещения (или переименования) файлов вы имеете возможность изменить имена копируемых или перемещаемых файлов. Для этого вы должны задать маску для имен файлов-источников и маску для имен файлов, которые будут созданы (файлы-приемники). Обычно эта вторая маска представляет собой несколько символов замены (wildcards) в конце строки, определяющей место назначение создаваемых файлов. Задание масок осуществляется в строках ввода, отображаемых в окне, появляющемся после обращения к командам копирования / переноса (рис. 6.6).

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

Рис. 6.6. Диалоговое окно для переименования файлов

Есть еще несколько опций, которые влияют на выполнение операций копирования/перемещения файлов, и которые устанавливаются в том же окне запроса, где задаются маски имен файлов, либо через команду меню Настройки | Конфигурация .

Опция Разименовывать ссылки (Follow links) определяет, будут ли при копировании жестких или символических ссылок в каталоге-приемнике (и рекурсивно в подкаталогах) создаваться такие же ссылки, или будут копироваться файлы (и подкаталоги), на которые эти ссылки указывают.

Опция Внутрь каталога, если есть (Dive into subdirs) определяет, что делать, если в каталоге-приемнике уже существует подкаталог, имя которого совпадает с именем файла (каталога), который копируется (источника). По умолчанию (опция отключена) содержимое каталога-источника копируется в каталог-приемник. Если опция включена, то в каталоге приемнике будет создан новый подкаталог с тем же именем, в который и будет осуществляться копирование.

Лучше показать это на примере. Пусть вы хотите скопировать содержимое каталога one в каталог /two/one, который уже существует. Обычно (опция отключена) mc будет просто копировать все файлы из one в /two/one. Если опцию включить, копирование файлов будет производиться в /two/one/one.

Опция Сохранять атрибуты (Preserve attributes) определяет, будут ли при копировании/перемещении сохранены атрибуты исходного файла: права доступа, временные метки и, если вы root, UID и GID исходного файла. Если опция отключена, атрибуты будут установлены в соответствии с текущим значением umask.

На процедуры копирования и перемещения файлов оказывает также влияние установка опции Образцы в стиле shell в меню Настройки / Конфигурация. Когда эта опция включена, вы можете использовать символы замены (wildcards) ‘*’ и ‘?’ в маске источника. Они обрабатываются аналогично тому, как это делается в shell. В маске приемника разрешается использовать только ‘*’ и ‘\ цифра > ‘. Первый символ ‘*’ в маске приемника соответствует первой группе символов замены в маске источника, второй символ ‘*’ соответствует второй группе и т. д. Аналогично, символ замены ‘\1’ соответствует первой группе символов замены в маске источника, символ ‘\2’ — второй группе и т. д. Символ ‘\0’ соответствует целому имени файла-источника. Приведем пару примеров.

Пример 1 . Если маска источника «*.tar.gz», а маска приемника — «/two/*.tgz», и имя копируемого файла — «foo.tar.gz», копия будет называться «foo.tgz» и будет находиться в каталоге «/two».

Пример 2. Предположим, вы хотите поменять местами имя и расширение файла, так чтобы «file.c» стал файлом «c.file». Маска источника для этого должна иметь вид «*.*», а маска приемника — «\2.\1».

Читайте также:  Unity linux arm build

Когда опция Образцы в стиле shell ( » Use shell patterns ” ) выключена, mc не осуществляет автоматической группировки. Для указания групп символов в маске источника, которые будут соответствовать символам замены в маске приемника, вы должны в этом случае использовать скобки ‘\(. \)’. Этот способ более гибкий, но требует больше усилий при вводе. Снова приведем два примера

Пример 3 . Если маска источника имеет вид «^\(.*\)\.tar\.gz$», копирование производится в «/two/*.tgz» и копируется файл «foo.tar.gz», то результатом будет «/two/foo.tgz».

Пример 4 . Предположим, что вы хотите поменять местами имя файла и его расширение, так чтобы имена вида «file.c» приняли вид «c.file».

Маска источника для этого — «^\(.*\)\.\(.*\)$», а маска приемника — «\2.\1».

При выполнении операций копирования/перемещения вы можете также преобразовать регистр символов в именах файлов. Если вы используете ‘\u’ или ‘\l’ в маске приемника, то следующий символ имени будет образован в верхнем (заглавные символы) или нижнем (строчные) регистре соответственно.

Если использовать в маске приемника ‘\U’ или ‘\L’, то к соответствующему регистру будут преобразованы все последующие символы, вплоть до следующего вхождения ‘\L’ или ‘\U’, или же до конца имени файла.

Применение ‘\u’ и ‘\l’ обеспечивает более широкие возможности, чем ‘\U’ и ‘\L’.

Например, если маска источника есть ‘*’ (опция Образцы в стиле shell включена) или ‘^\(.*\)$’ (опция Образцы в стиле shell выключена), а маска приемника есть ‘\L\u*’, имена файлов будут преобразованы таким образом, что первые буквы имени будут заглавными, а все остальные — строчными.

Символ ‘\’ в масках используется для отмены специальной интерпретации отдельных символов. Например, ‘\\’ означает просто обратный слэш (как литерал) и ‘\*’ означает просто звездочку (asterisk).

Источник

Как переименовать файлы и каталоги в Linux

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

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

В этом руководстве мы покажем вам, как использовать команды mv и rename для переименования файлов и каталогов.

Переименование файлов с помощью команды mv

Команда mv (сокращение от move) используется для переименования или перемещения файлов из одного места в другое. Синтаксис команды mv следующий:

source может быть один или несколько файлов или каталоги, а destination может быть один файл или каталог.

  • Если вы укажете несколько файлов в качестве source , destination должен быть каталог. В этом случае source файлы перемещаются в целевой каталог.
  • Если указать один файл в качестве source и destination целевой существующий каталог, то файл перемещается в указанный каталог.
  • Чтобы переименовать файл, вам необходимо указать один файл в качестве source и один файл в качестве destination объекта.

Например, чтобы переименовать файл file1.txt в file2.txt вы должны запустить:

Переименование нескольких файлов с помощью команды mv

Команда mv может переименовывать только один файл за раз, но ее можно использовать вместе с другими командами, такими как find или inside bash for циклов for или while для переименования нескольких файлов.

В следующем примере показано, как использовать цикл for в Bash для переименования всех файлов .html в текущем каталоге, изменив расширение .html на .php .

Давайте проанализируем код построчно:

  • Первая строка создает цикл for и выполняет итерацию по списку всех файлов с .html .
  • Вторая строка применяется к каждому элементу списка и перемещает файл в новый, заменяя .html на .php . Часть $ использует расширение параметра оболочки для удаления части .html из имени файла.
  • done указывает конец сегмента цикла.

Вот пример использования mv в сочетании с find для достижения того же, что и выше:

Команда find передает все файлы, заканчивающиеся на .html в текущем каталоге, в mv один за другим с использованием параметра -exec . Строка <> — это имя файла, который в данный момент обрабатывается.

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

Переименование файлов с помощью команды rename

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

Есть две версии команды rename с разным синтаксисом. В этом руководстве мы будем использовать Perl-версию команды rename . Если в вашей системе не установлена эта версия, вы можете легко установить ее с помощью диспетчера пакетов вашего дистрибутива.

Установить rename в Ubuntu и Debian

Установить rename в CentOS и Fedora

Установить rename в Arch Linux

Синтаксис команды rename следующий:

Команда rename переименует files соответствии с указанным регулярным выражением perlexpr . Вы можете узнать больше о регулярных выражениях Perl здесь .

В следующем примере все файлы с расширением .html изменятся на .php :

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

Результат будет выглядеть примерно так:

По умолчанию команда rename не перезаписывает существующие файлы. Передайте параметр -f чтобы разрешить перезапись существующих файлов:

Ниже приведены еще несколько распространенных примеров использования команды rename :

Замените пробелы в именах файлов символами подчеркивания

Преобразование имен файлов в нижний регистр

Преобразование имен файлов в верхний регистр

Выводы

Мы показали вам, как использовать команды mv и rename для переименования файлов.

Существуют также другие команды для переименования файлов в Linux, такие как mmv . Новые пользователи Linux, которых пугает командная строка, могут использовать инструменты пакетного переименования графического интерфейса пользователя, такие какMétamorphose .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

unixforum.org

Форум для пользователей UNIX-подобных систем

  • Темы без ответов
  • Активные темы
  • Поиск
  • Статус форума

Переименование части названия файла

Модератор: /dev/random

Переименование части названия файла

Сообщение fireboltgp » 22.10.2013 13:39

Приветствую и благодарю всех, появивших интерес!

Задача моя очень проста: переименовать «name- daily-backup.tgz» в «name- weekly-backup.tgz» (сменить daily на weekly в названии файлов). Да только вот гугл не нашел прямого ответа на мой вопрос. Попытки прочесть man sed’a навели страх, и тратить время на изучение пугающего не хочется, ибо слишком долго Прошу показать конкретные параметры для sed’a на примере

Другие варианты выполнения задачи тоже интересны

Re: Переименование части названия файла

Сообщение SLEDopit » 22.10.2013 13:48

Не надо так делать. Парсить ls сам по себе плохо.
Ну и формировать команды sed’ом тогда, когда без этого можно вполне обойтись, тоже не есть хорошо (и, кстати, последний пайп с sh вполне можно заменить на sed’овскую команду е, если sed gnu’тый).

В данном случае я бы обратил внимание на команду rename. В моём дистрибутиве то, что вы хотите выглядело бы так:

Однако перед применением, всё же почитайте man rename, поскольку в разных дистрибутивах устновлены разные rename (не разные версии, а именно разные программы с одинаковым названием). Могут быть отличия.

Ну, или на худой конец, переименовал бы на чистом bash:

Источник

Переименование файлов в Linux

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

Переименование командой mv

Команда mv (от слова move) используется для переименования или перемещения файлов и директорий из командной строки.

Синтаксис команды mv очень простой:

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

Основные опции:
-f — перезаписывать существующие файлы.
-n — не перезаписывать существующие файлы.
-i — выдавать запрос на перезапись существующих файлов.
-u — не перемещать файлы, которые уже существуют, если существующие файлы новее (время модификации новее).
-v — выводить имя каждого файла перед его переносом.

Как задавать имена файлов и директорий для переименования:

  • Чтобы переименовать файл с помощью команды mv нужно в качестве источника задать данный файл, а в качестве назначения указать новое имя файла.
  • Если указывается путь до файла, то директории должны совпадать, иначе файл будет перемещен в другую директорию.
  • Если в качестве источника указать файл, а в качестве назначения путь до файла в другой директории и задать новое имя файла, то файл будет перемещен в другую директорию и переименован.
  • Если в качестве источника указана директория, а в качестве назначения задано новое имя для данной директории, то директория будет просто переименована. Если же директория назначения уже существует, то директория источник будет перемещена в директорию назначения .

Переименование файла

Переименование файла myfile1.dat в файл myfile2.dat:

Переименование файла с указанием пути до файла:

Переименование директории

Переименование директории /home/pingvinus/mydir1 в директорию /home/pingvinus/mydir2 . Справедливо, если /home/pingvinus/mydir2 не существует.

Если /home/pingvinus/mydir2 существует, то, выполнив команду:

директория mydir1 будет перемещена внутрь директории /home/pingvinus/mydir2 . То есть mydir1 будет в результате находиться по адресу /home/pingvinus/mydir2/mydir1 .

Переименование и перемещение

Если в качестве файла назначения указан новый путь и новое имя файла, то файл будет перемещен и переименован. Например, следующая команда перемещает файл myfile1.dat в директорию /home/pingvinus/dir и переименовывает его в myfile2.dat :

Переименование командой rename

Команда rename служит для массового (пакетного) переименования файлов. Она позволяет выполнять замену определенных символов или частей имени файла и использованием Perl-регулярных выражений.

Если вдруг в вашем дистрибутиве нет команды rename , то ее можно установить, выполнив (выберите соответствующую команду для вашего дистрибутива):

Синтаксис команды rename :

старое_имя — регулярное выражение или часть имени файла, которое нужно заменить на новое_имя .
новое_имя — задает результирующее имя файла (может быть регулярным выражением).

Основные опции:
-f — перезаписывать существующие файлы.
-n — вывести список файлов, которые будут переименованы и их новые имена, но не выполнять переименование.
-v — вывести список обработанных файлов.

Проще всего понять, как пользоваться данной командой, на примерах.

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

Массово изменить расширение .html на .php у всех html-файлов.

По умолчанию rename не перезаписывает существующие файлы. Чтобы существующие файлы перезаписывались, используется опция -f :

Замена пробелов на подчеркивание

Заменить все символы пробелов в имени файлов на символ подчеркивания:

Конвертация имен файлов в строчные буквы

Конвертация имен файлов в прописные буквы

Показать, что именно будет переименовано, но не переименовывать

Чтобы избежать ошибок при переименовании файлов, особенно при использовании сложных регулярных выражений, можно сначала вывести список того, что будет переименовано, но не запускать само переименование. Для этого служит опция -n .

Например, мы хотим изменить расширение у файлов с .jpeg на .jpg . Используем опцию -n , чтобы просто вывести какие файлы будут переименованы:

Полное описание команд mv и rename можно получить, выполнив в терминале команды:

Массовое переименование с использованием программ

Для массового переименования файлов можно воспользоваться программами:

Источник

Читайте также:  Запуск кода python linux
Оцените статью