Всем привет!
В этой статье речь пойдет о команде mv в Linux. Команда mv – перемещает, переименовывает файлы. Самое простое описание команды mv звучит так: эта команда перемещает файл из одной позиции файловой системы в другую.
Перемещение файлов
Если вы перемещаете файл в другой каталог и хотите, чтобы он сохранил свое имя, вам надо знать только имя каталога. При этом имя файла останется прежним.
Давайте для примера переместим файл
img_01.jpg в каталог
new_img, как показано ниже:
Код:
|
$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_01.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_02.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_03.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_04.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_05.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_06.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_07.jpg
drwxr-xr-x 2 hub-lex hub-lex 4096 Апр 15 08:17 new_img
$ mv img_01.jpg new_img/
$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_02.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_03.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_04.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_05.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_06.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_07.jpg
drwxr-xr-x 2 hub-lex hub-lex 4096 Апр 15 08:21 new_img
$ ls -l new_img/
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_01.jpg |
Для того чтобы гарантировать, что
new_img – это каталог, желательно указать после него косую черту, как показано в примере. Если окажется, что new_img – не каталог, команда не переместит файл. Так можно предотвратить запись одного файла поверх другого.
Для справки: многие опции команд cp и mv совпадают и производят одинаковые действия. Например опция -i запрашивает подтверждение на выполнение, а если указана опция -v, то при копировании и перемещении выводятся подробные действия о выполненных действиях.
Переименование файлов и каталогов
Как вы вскоре увидите, команда mv может делать нечто большее, чем обычное перемещение файлов. Она также позволяет переименовывать файлы. Именно это свойство пользователи, работающие в терминале, издавна используют для переименовывания файлов и каталогов.
Код:
|
$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_02.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_03.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_04.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_05.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_06.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_07.jpg
drwxr-xr-x 2 hub-lex hub-lex 4096 Апр 15 08:21 new_img
$ mv new_img/ new_IMG_DIR
$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_02.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_03.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_04.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_05.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_06.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_07.jpg
drwxr-xr-x 2 hub-lex hub-lex 4096 Апр 15 08:21 new_IMG_DIR |
Копируя каталог с помощью команды cp, необходимо указывать опцию
-R (или –recursive). С командой mv дело обстоит по другому. Как можно заметить из вывода выше, она, будучи вызвана без дополнительных опций, успешно перемещает или переименовывает каталоги.
Для справки: команда mv имеет одну важную особенность, которую начинающие пользователи часто упускают из виду. Если вы перемешаете ссылку, указывающую на каталог, вам надо внимательно следить за вводимыми данными. Предположим, что в вашем рабочем каталоге есть ссылка hello, которая указывает на каталог /home/hub-lex/testing/hello, и вы хотите переместить эту ссылку в каталог /home/hub-lex/new_dir. Приведенная ниже команда перемещает только саму ссылку: $ mv hello ~/new_dir. Следующая команда перемещает каталог, на который указывает эта ссылка: $ mv hello/ ~/new_dir. Различие между ними только в косой черте “/“, которая вводится после ссылки. Если символ “/” отсутствует, перемещается лишь сама ссылка. Включив этот символ, вы переместите каталог, а не ссылку. Будьте внимательны!
Удаление файлов
Команда rm (в ней нашли место только для две буквы из слова “remove”) безвозвратно удаляет файлы. В системе Linux нет “мусорной корзины”. Одно неосторожное движение – и вернуть файлы будет проблематично. О восстановлении файлов в системе Linux вы можете ознакомиться в статье “
Файлы-призраки: как криминалисты восстанавливают надежно удаленные данные?“.
Команда rm проста в использовании, можно даже сказать, слишком проста. Давайте для примера удалим файл img_07.jpg и текущего каталога:
Код:
|
$ pwd
/home/hub-lex/Testing/command_mv_test
$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_02.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_03.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_04.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_05.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_06.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_07.jpg
drwxr-xr-x 2 hub-lex hub-lex 4096 Апр 15 08:21 new_IMG_DIR
$ rm img_07.jpg
$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_02.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_03.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_04.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_05.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_06.jpg
drwxr-xr-x 2 hub-lex hub-lex 4096 Апр 15 08:21 new_IMG_DIR |
Удаление нескольких файлов с помощью символов групповых операций
Символы групповых операций, например *, позволяют одним нажатием клавиши удалить несколько файлов, как показано ниже:
Код:
|
$ pwd
/home/hub-lex/Testing/command_mv_test
$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_02_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_03_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_04_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_05.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_06.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_08.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_09.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_10.jpg
drwxr-xr-x 2 hub-lex hub-lex 4096 Апр 15 08:21 new_IMG_DIR
$ rm *_old.jpg
$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_05.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_06.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_08.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_09.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_10.jpg
drwxr-xr-x 2 hub-lex hub-lex 4096 Апр 15 08:21 new_IMG_DIR |
Для справки: будьте предельно внимательны, удаляя файлы с указанием символов групповых операций, потому что вы можете удалить гораздо больше, чем собирались. Классический пример – ввод вместо rm *txt команды mv * txt. Вместо текстовых файлов будут удалены все файлы, а затем команда rm предпримет попытку удалить файл txt.
Вывод подробной информации при удалении файлов
Если вам нужно получать сведения о всех действиях, выполняемых командой rm, тогда используйте опцию
-v (–verbose):
Код:
|
$ pwd
/home/hub-lex/Testing/command_mv_test
$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:37 img_01_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:37 img_02_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:37 img_03_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_05.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_06.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_08.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_09.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_10.jpg
drwxr-xr-x 2 hub-lex hub-lex 4096 Апр 15 08:21 new_IMG_DIR
$ rm -v *_old.jpg
удалён «img_01_old.jpg»
удалён «img_02_old.jpg»
удалён «img_03_old.jpg»
$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_05.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_06.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_08.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_09.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_10.jpg
drwxr-xr-x 2 hub-lex hub-lex 4096 Апр 15 08:21 new_IMG_DIR |
Как предотвратить удаление важных файлов
Опция
-i (или –interactive) делает команду rm более безопасной. В этом случае команда запрашивает у пользователя подтверждение на удаление каждого файла. Эта опция не заменима при работе с правами root! Так что учитесь вводить команды правильно!
Код:
|
$ pwd
/home/hub-lex/Testing/command_mv_test
$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:39 img_01_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:39 img_02_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:39 img_03_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_05.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_06.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_08.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_09.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_10.jpg
drwxr-xr-x 2 hub-lex hub-lex 4096 Апр 15 08:21 new_IMG_DIR
$ rm -i *_old.jpg
rm: удалить пустой обычный файл «img_01_old.jpg»? y
rm: удалить пустой обычный файл «img_02_old.jpg»? n
rm: удалить пустой обычный файл «img_03_old.jpg»? y
$ ls -l
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:39 img_02_old.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_05.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 08:16 img_06.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_08.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_09.jpg
-rw-r--r-- 1 hub-lex hub-lex 0 Апр 15 18:33 img_10.jpg
drwxr-xr-x 2 hub-lex hub-lex 4096 Апр 15 08:21 new_IMG_DIR |
Ответ
y на запрос команды означает согласие на удаление файла, а ответ
n – приказ сохранить файл, т.е. ничего с ним не делать (пропустить). Получив ответ
n, команды rm не прекращает работу, а переходит к обработке следующего файла.
На сегодня это все.