В Linux процессы перемещения и переименования файлов и каталогов не различаются. Для данных операций используется команда mv (сокращенно от move — передвигать):
mv [опции] исходное_размещение целевое_размещение
Например, имеется файл test.txt. Необходимо его переименовать в student.txt. Для этого в заданном каталоге достаточно ввести команду
mv test.txt student.txt
То же самое и с каталогами.
А если в качестве целевого файла указать уже существующий файл?
Тогда целевой файл будет заменен на исходный файл.
Например, у нас имеются те же 2 файла: test.txt и student.txt:
Теперь введем команду mv test.txt student.txt
В результате содержимое файла student.txt заменено содержимым файла test.txt, а сам файл test.txt удален
Это станет очевидно, если сравнить размеры файла student.txt до и после выполнения команды mv.
То есть содержимое файла student.txt потеряно?
Все верно.
С каталогами то же самое?
Нет. Если в качестве целевого каталога указать существующий каталог, то исходный каталог будет просто перемещен в целевой каталог.
Например, в домашнем каталоге имеются 2 каталога: music/ и video/. Если ввести mv music/ video/, то каталог 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 г.
Теперь выполним mv -u test.txt student.txt.
И если сравним размеры и даты изменения файлов, то увидим, что они не изменились.
Для большей убедительности можно проверить содержимое каждого файла.