Команда «mv» в linux (от английского слова — move) — это утилита командной строки, предназначенная для перемещения файлов и директорий, а также их переименования. В данной статье подробно изучим синтаксис и основные опции команды mv, рассмотрим примеры её использования в различных сценариях, а также научимся выполнять интересные задачи с файлами и директориями. Это руководство предназначено как для новичков, так и для опытных пользователей
- Синтаксис
- Опции
- Как переместить файл
- Перемещение нескольких файлов одновременно
- Создание резервных копий файлов при перемещении
- Перемещение файлов, которых нет в целевой директории. Опция -u
- Работа с файлами, имена которых содержат пробелы
- Как переименовать файлы
- Переименование папки
- Как перенести папку в другую папку
- Как перемещать несколько каталогов
- Запрашивать подтверждение перед перезаписью. Опция -i
- Принудительная перезапись. Опция -f
- Не перезаписывать существующие файлы. Опция -n
- Подробный вывод. Опция –verbose
- Заключение
Синтаксис
Это основной синтаксис команды mv
. Можно выполнять перемещение файлов и каталогов с различными параметрами, в зависимости от ваших потребностей.
1 2 3 | mv [ОПЦИИ]... [-T] ИСТОЧНИК НАЗНАЧЕНИЕ mv [ОПЦИИ]... ИСТОЧНИК... КАТАЛОГ mv [ОПЦИИ]... -t КАТАЛОГ ИСТОЧНИК... |
Вот какие элементы входят в синтаксис команды mv
:
- mv — Это сама команда, которую вы используете для перемещения файлов и директорий.
- [ОПЦИИ]… — Здесь вы можете указать дополнительные опции команды
mv
. Опции представляют собой ключи, начинающиеся с дефиса (например,-f
,-i
,-n
) и используются для управления поведением команды. - [-T] — Эта опция
-T
является необязательной и используется для явного указания, чтоНАЗНАЧЕНИЕ
является именем файла, а не каталогом. Это может быть полезно, если вы хотите переименовать файл, а не переместить его внутри каталога. - ИСТОЧНИК — Это имя файла или директории, которое вы хотите переместить или переименовать.
- НАЗНАЧЕНИЕ — Это целевое имя файла или директории, в которое вы хотите переместить или переименовать
ИСТОЧНИК
. Если вы используете опцию-t
, тоНАЗНАЧЕНИЕ
должно быть именем каталога, в который вы хотите переместитьИСТОЧНИК
. - КАТАЛОГ — Это имя каталога, в который вы хотите переместить
ИСТОЧНИК
, когда используете второй вариант синтаксиса. - -t КАТАЛОГ ИСТОЧНИК… — Это третий вариант синтаксиса, который позволяет перемещать несколько файлов (
ИСТОЧНИК...
) в указанныйКАТАЛОГ
.
Обратите внимание, что [ОПЦИИ]
— это необязательная часть команды mv
, и вы можете использовать только саму команду mv
с ИСТОЧНИК
и НАЗНАЧЕНИЕ
, если вам не требуются дополнительные параметры.
Опции
Опции команды «mv» расширяют функциональность и предоставляют контроль над процессами перемещения и переименования файлов и директорий. Выбор параметра зависит от ваших конкретных потребностей и предпочтений. Дополнительные параметры расширяют возможности. Рассмотрим перечень основных опций и их функций:
- —backup[=CONTROL] — Создает резервную копию каждого существующего файла назначения. Вы можете указать опциональный аргумент
CONTROL
, который определяет метод создания резервных копий. Примеры значений:none
(не создавать резервные копии),numbered
(создавать нумерованные резервные копии),existing
(создавать нумерованные резервные копии, если уже есть),simple
(создавать простые резервные копии). - -b — Эквивалентно
--backup
, но не принимает аргумент. - -f, —force — Перемещает файлы без запроса на подтверждение даже в случае перезаписи существующих файлов.
- -i, —interactive — Запрашивает подтверждение перед перемещением файла, если файл назначения уже существует или если происходит перезапись.
- -n, —no-clobber — Не перезаписывает существующий файл назначения. Если файл назначения существует, команда
mv
пропускает перемещение. - —strip-trailing-slashes — Удаляет завершающие слэши (
/
) в именах исходных файлов. Это полезно, если исходные имена содержат лишние слэши. - -S, —suffix=SUFFIX — Позволяет указать собственный суффикс для резервных копий файлов назначения. По умолчанию используется суффикс
~
. - -t DIRECTORY — Перемещает все указанные исходные файлы в указанный каталог
DIRECTORY
. - -T, —no-target-directory — Используется, когда
НАЗНАЧЕНИЕ
рассматривается как обычный файл, а не как каталог. - -u, —update — Перемещает файл только в том случае, если исходный файл новее файла назначения или если файл назначения отсутствует.
- -v, —verbose — Выводит подробное объяснение о том, какие действия выполняются командой
mv
. Это полезно для отслеживания процесса. - -Z, —context — Устанавливает контекст безопасности SELinux для файла назначения в контекст по умолчанию.
- —help — Выводит справочную информацию о команде mv.
- —version — Выводит информацию о версии команды
mv
.
Для вывода краткой справки по команде используйте вариант mv --help а, чтобы посмотреть подробное руководство используйте команду man mv .
Как переместить файл
Рассмотрим перемещение файла. Синтаксис операции выглядит следующим образом:
1 | mv [исходный_файл] [файл_назначения] |
Где:
- исходный_файл — это путь к файлу, который вы хотите переместить.
- файл_назначения — это путь к месту, куда вы хотите переместить исходный файл.
Пример:
Допустим, у вас есть файл file.txt
, и вы хотите переместить его из текущей директории в директорию documents
. Если вы не знаете как называется ваш текущий каталог используйте команду pwd. Выполните следующую команду:
1 | $ mv file.txt documents/ |
Перемещать файлы можно как используя каталоги в текущей директории так и указав абсолютный путь. Пример перемещения с абсолютным путем:
1 | $ mv file.txt /home/user/documents/ |
После выполнения этой команды файл file.txt
будет перемещен в директорию documents
.
Для того, чтобы посмотреть и убедиться, что файл действительно находится в новой папке используйте команду ls.
Перемещение нескольких файлов одновременно
Для перемещения нескольких файлов одновременно укажите их имена через пробел. Синтаксис операции:
1 | mv [файл1] [файл2] [файл3] директория_назначения/ |
Здесь:
- файл1, файл2, файл3 — это имена файлов, которые вы хотите переместить.
- директория_назначения — это путь к целевой директории, куда вы хотите переместить выбранные файлы.
Пример:
Допустим есть файлы file1.txt
, file2.txt
и file3.txt
, и я хочу переместить их в директорию documents
. Выполняю команду:
1 | $ mv file1.txt file2.txt file3.txt documents/ |
После выполнения этой команды файлы file1.txt
, file2.txt
и file3.txt
будут перемещены в директорию documents
.
Создание резервных копий файлов при перемещении
Когда вы перемещаете файлы с помощью команды mv
существует опция для создания резервных копий существующих файлов, если файл с таким именем уже существует в целевой директории. Это полезно, чтобы сохранить оригиналы файлов, на случай если что-то пойдет не так.
Для создания резервных копий файлов при перемещении, используйте опцию -b
или --backup
с командой mv
. Вот синтаксис:
1 | mv -b исходный_файл файл_назначения |
Где:
- исходный_файл — это путь к файлу, который вы хотите переместить.
- файл_назначения — это путь к месту, куда вы хотите переместить исходный файл.
Пример:
Рассмотрим на примере файла file.txt
. Я хочу переместить его в директорию documents
. Если в documents
уже есть файл с таким именем, то команда mv
создаст резервную копию исходного файла. Выполню команду:
1 | $ mv -b file.txt documents/ |
После выполнения этой команды файл file.txt
будет перемещен в директорию documents
, и если там уже был файл с таким именем, то будет создана резервная копия исходного файла с добавлением суффикса. Например, file.txt
может быть скопирован как file.txt~
.
Это помогает избежать потери данных и обеспечивает безопасность при перемещении файлов.
Перемещение файлов, которых нет в целевой директории. Опция -u
Команда mv
в Linux позволяет перемещать файлы в другую директорию, учитывая их актуальность. С опцией -u
(или --update
) можно перемещать файлы только в том случае, если исходный файл новее, чем файл с аналогичным именем в целевой директории, или если файл с таким именем отсутствует в целевой директории.
Это полезно, когда вы хотите обновить файлы только тогда, когда они изменились. Вот синтаксис:
1 | mv -u [исходный_файл] [файл_назначения] |
Где:
- [исходный_файл] — это путь к файлу, который вы хотите переместить.
- [файл_назначения] — это путь к директории, в которую вы хотите переместить исходный файл.
Пример:
Допустим у меня есть файл в домашней директории с названием file.txt
, и я перемещу его в папку documents
. Команда такая:
1 | $ mv -u file.txt documents/ |
Если файл file.txt
новее, чем файл с аналогичным именем в директории documents
, или если такого файла в documents
нет, то команда выполнит перемещение. Это обеспечивает только актуальное обновление файлов в целевой директории.
Работа с файлами, имена которых содержат пробелы
При перемещении файлов в Linux, имена которых содержат пробелы, следует использовать кавычки или обратные слэши (escape-символы), чтобы обеспечить правильное распознавание имен файлов.
Использование кавычек:
Можно заключить имена файлов в одинарные или двойные кавычки. Это предотвращает разбор имен на части, разделенные пробелами.
Пример с одинарными кавычками:
1 | mv 'file с пробелом.txt' каталог_назначения/ |
Пример с двойными кавычками:
1 | mv "file с пробелом.txt" каталог_назначения/ |
Использование обратных слэшей:
Другой способ — экранирование пробелов с помощью обратных слэшей:
1 | mv file\ с\ пробелом.txt каталог_назначения/ |
Оба эти способа позволяют корректно обрабатывать имена файлов с пробелами и перемещать их в указанный каталог.
Пример перемещения файла с пробелом. Рассмотрим такой вариант, файл file с пробелом.txt
перенесу в каталог documents
. Команда:
1 | $ mv file\ с\ пробелом.txt documents/ |
Как переименовать файлы
Переименование файла — это распространенная операция. Ниже приведен синтаксис и пример использования консольной команды mv
для переименования файлов.
1 | mv [исходное_имя_файла] [новое_имя_файла] |
Где:
- [исходное_имя_файла] — это текущее имя файла, который вы хотите переименовать.
- [новое_имя_файла] — это имя, которое вы хотите присвоить файлу после переименования.
Пример:
Предположим, у вас есть файл old_file.txt
, и вы хотите переименовать его в new_file.txt
. Выполните следующую команду:
1 | $ mv old_file.txt new_file.txt |
После выполнения этой команды файл old_file.txt
будет переименован в new_file.txt
.
Переименование папки
Переименование папки также выполняется с помощью команды mv
. Это действие позволяет изменить имя директории, сохраняя ее содержимое и структуру. Вот синтаксис и пример переименования папки с использованием команды mv
:
1 | mv [исходная_папка] [новое_имя_папки] |
Где:
- [исходная_папка] — это текущее имя папки, которую вы хотите переименовать.
- [новое_имя_папки] — новое имя, которое вы хотите присвоить папке.
Пример:
Допустим, у вас есть папка с именем oldfolder
, и вы хотите переименовать ее в newfolder
. Выполните команду:
1 | $ mv oldfolder/ newfolder |
После выполнения этой команды имя папки будет изменено, при этом содержимое директории останется неизменным.
Как перенести папку в другую папку
Вот синтаксис и пример перемещения папки с использованием команды mv
:
1 | mv [исходная_папка] [путь_к_новому_местоположению/] |
Где:
- [исходная_папка] — это текущий каталог, который требуется переместить.
- [путь_к_новому_местоположению/] — это путь к новому местоположению, куда вы хотите переместить папку.
Здесь также можно указать абсолютный путь или относительный.
Примеры. Перемещение с абсолютным путем:
Допустим, у меня есть папка с именем my_folder
, и я хочу переместить ее в директорию /home/chuzhoy007_ru/documents/
. Команда будет такой:
1 | $ mv my_folder/ /home/chuzhoy007_ru/documents/ |
Перемещение с относительным путем (из текущей папки):
Переместим туже папку не указывая полный путь. Команда:
1 | $ mv my_folder/ documents/ |
Как перемещать несколько каталогов
Для перемещения нескольких каталогов нужно указать их названия через пробел.
Синтаксис данной операции:
1 | mv каталог1 каталог2 каталог3 ... путь_к_новому_местоположению/ |
Здесь
- каталог1, каталог2, каталог3 — и так далее — это имена каталогов, которые вы хотите переместить.
- путь_к_новому_местоположению — это путь к новому местоположению, куда вы хотите переместить указанные каталоги.
Пример:
В этом примере каталоги video
, doc
и music
будут перемещены в новое местоположение media/
. Вы можете указать любое количество каталогов для перемещении. Указываем команду:
1 | $ mv video doc music media/ |
Запрашивать подтверждение перед перезаписью. Опция -i
Опция -i
позволяет контролировать процесс перемещения файлов или каталогов и предотвращать случайную перезапись существующих данных в целевой директории. Когда вы используете её будет запрашивать ваше подтверждение, если файл с таким же именем уже существует в целевой директории.
Таким образом, опция -i
служит дополнительным механизмом безопасности, предотвращающим потерю данных из-за случайной перезаписи файлов.
Вот пример использования опции -i
с командой mv
:
1 | mv -i исходный_файл файл_назначения |
Если файл с таким именем уже существует в целевой директории, команда mv
запросит подтверждение перед перезаписью. Вы сможете ввести «y» (да) или «n» (нет) в зависимости от вашего решения.
Например:
1 | $ mv -i file.txt documents/ |
Если файл file.txt
уже существует в директории documents
, команда mv
спросит:
1 | mv: переписать 'documents/file.txt'? |
Чтобы файл был перезаписано можно указать; «y, yes, да, д», чтобы отказаться можно указать «n, no, н, нет».
Принудительная перезапись. Опция -f
Для выполнения принудительной перезаписи файлов можно добавить опцию -f
или --force
. Эта опция заставляет команду mv перезаписывать существующие файлы без запроса на подтверждение от пользователя.
Важно помнить, что использование опции -f может привести к потере данных, так что будьте осторожны и убедитесь, что вы перезаписываете файлы и каталоги правильно.
Пример:
У меня есть файл file.txt
, и нужно переместить его в директорию documents
, и, если файл с таким именем уже существует в этой директории, перезаписать его без запроса на подтверждение:
1 | $ mv -f file.txt documents/ |
Эта команда перезапишет файл file.txt в директории documents, если он уже существует, без запроса на подтверждение.
Не перезаписывать существующие файлы. Опция -n
Опция -n
или --no-clobber
в команде mv предназначена для предотвращения перезаписи существующих файлов. Если вы хотите переместить или переименовать файл, но не хотите, чтобы он перезаписал существующий файл с тем же именем, вы можете использовать эту опцию.
Пример:
Рассмотрим на примере файла file.txt
, который я хочу переместить в директорию documents
. Однако, файл с таким именем уже существует в этой директории, я не хочу, чтобы он был перезаписан. Для этого используем опцию -n следующим образом:
1 | $ mv -n file.txt documents/ |
Если файл с именем file.txt уже существует в директории documents, команда mv не выполнит перемещение.
Подробный вывод. Опция –verbose
Для вывода подробной информации о процессе перемещения файлов и каталогов используется параметр -v
или --verbose
. Это полезно, когда вы хотите видеть, какие файлы были перемещены и куда, а также получить дополнительную информацию о выполнении команды mv
.
Пример:
Разберем пример переноса файла file.txt
в папку documents
. Я хочу видеть подробный вывод о процессе перемещения. Используем опцию --verbose
следующим образом:
1 | $ mv --verbose file.txt documents/ |
После выполнения этой команды, вы увидите информацию о том, какой файл был перемещен и куда:
1 | 'file.txt' -> 'documents/file.txt' |
Такой подробный вывод помогает отслеживать, какие операции выполняются, и следить за процессом перемещения файлов в реальном времени.
Заключение
В этой статье я рассказал вам о команде mv
в Linux и подробно рассмотрел различные аспекты перемещения и переименования файлов и директорий. Мы начали с основ, изучив синтаксис и поняли, как просто перемещать файлы и директории между разными местами на диске.
Мы также рассмотрели специфические сценарии, такие как переименование файлов и директорий, перемещение между каталогами, создание резервных копий при перемещении и перемещение файлов, которых нет в целевой директории. Вы узнали о полезных опциях, таких как -i
для подтверждения перед перезаписью и -n
для предотвращения перезаписи существующих файлов.