9 полезных команд mv в Linux

Файлы и каталоги – это строительные блоки операционной системы. Как обычные пользователи, мы ежедневно взаимодействуем с файлами и каталогами. Часто мы переименовываем или перемещаем файлы из одного места в другое для лучшей организации. Определенно, мы можем выполнить эту операцию с помощью графического интерфейса пользователя (GUI). Однако большинство пользователей Linux предпочитают использовать команду mv из-за ее богатых функциональных возможностей.

Синтаксис команды mv

Синтаксис команды mv аналогичен другим командам Linux. На высоком уровне он делится на две части – опции и аргументы:

mv [OPTIONS] <SOURCE> <DEST>
mv [OPTIONS] <SOURCE-1> <SOURCE-2> ... <DIRECTORY>

В приведенном выше синтаксисе квадратные скобки [...] представляют необязательные аргументы, а угловые скобки <...> представляют обязательные аргументы.

1. Как переименовать файл в Linux?

Самое основное использование команды mv – это переименование файла. Итак, давайте посмотрим, как переименовать файл из текущего каталога.

mv file-1.txt file-2.txt

2. Включение режима verbose в команде mv

Иногда мы хотим знать, какие файлы или каталоги переименовываются. В таких случаях мы можем использовать опцию -v для включения режима verbose.

Чтобы понять это, давайте переименуем файл, используя режим verbose:

mv -v file-2.txt file-1.txt 
renamed 'file-2.txt' -> 'file-1.txt'

В приведенном выше выводе мы видим, что теперь команда mv показывает сообщение о переименовании.

3. Как переименовать каталог в Linux?

По аналогии с файлами, мы можем использовать команду mv для переименования каталога. Для более ясного понимания сначала нужно создать новый каталог с именем src:

mkdir src

Теперь переименуем каталог с помощью следующей команды:

mv -v src dst
renamed 'src' -> 'dst'

4. Как переместить несколько файлов в каталог?

Много раз мы перемещаем файлы в один каталог для лучшей организации. Например, очень распространенной практикой является хранение всех аудиофайлов в одном каталоге.

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

Для начала создадим несколько файлов и новый каталог:

touch 1.mp3 2.txt 3.dat
mkdir misc

Теперь переместим все эти файлы в каталог misc с помощью следующей команды:

mv -v 1.mp3 2.txt 3.dat misc
renamed '1.mp3' -> 'misc/1.mp3'
renamed '2.txt' -> 'misc/2.txt'
renamed '3.dat' -> 'misc/3.dat'

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

5. Как перемещать несколько каталогов в Linux?

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

Сначала создайте несколько каталогов с помощью команды mkdir:
mkdir dir-1 dir-2 dir-3 dir-4

Теперь переместим все эти каталоги в каталог dir-4:

mv -v dir-1 dir-2 dir-3 dir-4

В приведенном выше выводе видно, что нам удалось переместить все каталоги.

h32 Как избежать перезаписи файлов в Linux?

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

Чтобы понять это, сначала создайте образец файла:

touch file-2.txt

Теперь попробуем перезаписать его с помощью следующей команды:

mv -v -n file-1.txt file-2.txt

Здесь мы видим, что режим verbose не показал никакого сообщения. Это указывает на то, что файл-2.txt не был перезаписан.

7. Как перезаписывать файлы интерактивно в Linux?

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

Теперь попробуем перезаписать файл file-2.txt в интерактивном режиме:

mv -v -i file-1.txt file-2.txt
mv: overwrite 'file-2.txt'?

В приведенном выше выводе видно, что команда ожидает подтверждения пользователя. Как и в других командах Linux, мы можем использовать y для продолжения или n для прерывания операции.

8. Перезаписывать файл только тогда, когда источник новее

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

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

Чтобы понять это, давайте обновим временную метку исходного файла:

touch -t 201912301000 file-1.txt 
ls -l file-1.txt 

В приведенном выше примере мы использовали опцию -t команды touch для установки более старой временной метки на file-1.txt.

Далее, давайте обновим временную метку файла назначения до текущего времени:

touch file-2.txt

Наконец, давайте попробуем выполнить перезапись файла назначения, используя опцию -u:

mv -v -u file-1.txt file-2.txt

В приведенном выше выводе видно, что режим verbose не показал никакого сообщения. Это указывает на то, что файл-2.txt не был перезаписан.

9. Как создать резервную копию перед перезаписью файлов?

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

touch file-1.txt file-2.txt
mv --backup=numbered -v file-1.txt file-2.txt

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

Чтобы понять это, давайте выполним эти две команды еще несколько раз и проверим результат:

touch file-1.txt file-2.txt
mv --backup=numbered -v file-1.txt file-2.txt
touch file-1.txt file-2.txt
mv --backup=numbered -v file-1.txt file-2.txt
touch file-1.txt file-2.txt
mv --backup=numbered -v file-1.txt file-2.txt
Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.tecmint.com

Комментарии (0)