Урок 6. Команда mv - переименование и перемещение файлов

В Linux процессы перемещения и переименования файлов и каталогов не различаются. Для данных операций используется команда mv (сокращенно от move - передвигать):

mv [опции] исходное_размещение целевое_размещение 

Например, имеется файл test.txt. Необходимо его переименовать в student.txt. Для этого в заданном каталоге введите команду mv test.txt student.txt.

То же самое и с каталогами.

А если в качестве целевого файла указать уже существующий файл?

Тогда целевой файл будет заменен на исходный файл.

Например, у нас имеются те же 2 файла: test.txt и student.txt:

Отображение файлов в папке
Рис. 1. Отображение файлов в папке

Теперь введем  mv test.txt student.txt. В результате содержимое файла student.txt заменено содержимым файла test.txt, а сам файл test.txt удален:

Файл test.txt удален. Размер файла student.txt тоже изменен
Рис. 2. Файл test.txt удален. Размер файла student.txt тоже изменен

Это станет очевидно, если сравнить размеры файла student.txt до и после выполнения команды mv.

То есть содержимое файла student.txt потеряно?

Все верно.

С каталогами то же самое?

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

Например, в домашнем каталоге имеются 2 каталога: music/ и video/. Если ввести mv music/ video/, то каталог music/ будет перемещен в каталог video/:

Отображение каталогов music и video
Рис. 3. Отображение каталогов music и video
Каталог music был перемещен в папку video
Рис. 4. Каталог music был перемещен в папку video

А как переместить сам файл в каталог?

Для этого формат команды будет выглядеть так mv перемещаемый_файл целевой_каталог.

Например, чтобы переместить файл student.txt в каталог documents/ выполним mv student.txt documents/.

Все варианты работы команды приведены в таблице:

Команда

Результат

mv файл_1 файл_2

Файл_1 существует.

Файл_2 не существует.


Операция переименования

Файл_2 будет создан с содержимым файла_1.

Файл_1 будет удален.

mv файл_1 файл_2

Оба файла существуют.


Операция перезаписи

Файл_2 будет перезаписан файлом_1.

Файл_1 будет удален.

mv файл каталог/

Файл и каталог существуют.


Операция перемещения

Файл будет перемещен в каталог.

mv каталог_1/ каталог_2/

Оба каталога существуют.


Операция перемещения

Каталог_1 будет перемещен в каталог_2.

mv каталог_1/  каталог_2/

Каталог_1 существует

Каталог_2 не существует


Операция переименования

Каталог_2 будет создан с содержимым  каталога_1

Каталог_1 будет удален.


Для команды mv наиболее часто используются следующие опции:

-f (--force) - принудительное перемещение/переименование файлов/каталогов без предупреждения пользователя.

-i (--interactive) -  перед началом операции система спросит пользователя действительно ли он хочет переместить файлы.

-u (--update) - отмена перемещения, если дата модификации целевого файла позже даты исходного. Например, мы хотим заменить файл student.txt  на test.txt. Причем файл student.txt был обновлен 20 сентября 2016 г., а файл test.txt - 10 сентября 2016 г:

Отображение файлов и каталогов
Рис. 5. Отображение файлов и каталогов. Обратите внимание на атрибуты файлов

Теперь выполним mv -u test.txt student.txt.

И если сравним размеры и даты изменения файлов, то увидим, что они не изменились:

Файлы не были изменены
Рис. 6. Файлы не были изменены

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