Введение
В данном руководстве показано, как использовать команду mv в Linux, чтобы перемещать файлы в файловой системе. Команда mv используется не только для перемещения файлов, она также может быть использована для переименования файлов.
Команду mv не следует путать с командой cp которая копирует файл из одного места в другое. Команда mv физически изменяет местоположение файла или переименовывает его. Это не означает, что файл больше не существует в своем первоначальном месте.
Как переименовать файл с помощью команды mv в Linux
Представьте, что вы скопировали большое количество фотографий с вашей цифровой камеры в папку Pictures в вашей домашней папке. (~ / Pictures).
Нажмите здесь для гида о тильде (~).
Имея много снимков в одной папке делает их трудно читаемыми. Было бы лучше, если бы классифицировать изображения в некотором роде.
Конечно, вы можете классифицировать изображения по годам и месяцам или вы могли бы классифицировать их по конкретному событию.
Для этого примера предположим, что в папке изображения, которые имеют следующие файлы:
img0001_01022315.jpg img0002_02034515.jpg img0003_05022315.jpg img0004_13022015.jpg img0005_14042116.jpg img0006_17071216.jpg img0007_19092316.jpg img0008_01015616.jpg img0009_02013216.jpg img0010_03016716.jpg
Трудно сказать, по фотографиям, что они на самом деле представляют. Каждое имя файла имеет дату, связанную с ним, так что вы можете по крайней мере поместить их в папки, основанные по их датам.
При перемещении файлов, папки назначения уже должны существовать в противном случае вы получите сообщение об ошибке.
Для создания папки используйте команду MKDIR следующим образом :
MkDir <имя_папки>
В примере, приведенном выше, было бы хорошей идеей, чтобы создать папку для каждого года и в каждой папке года должны быть папки для каждого месяца.
Например:
MkDir 2015 MkDir 2015 / 08_August MkDir 2015 / 09_September MkDir 2015 / 10_October MkDir 2015 / 11_November MkDir 2015 / 12_December MkDir 2016 MkDir 2016 / 01_January MkDir 2016 / 02_February
Теперь вы можете быть удивлены, почему я создал каждый месяц папку с номером и именем (т.е. 01_January).
При запуске листинга каталога с помощью в команду Ls папки возвращаются в алфавитном порядке. Без чисел апрель будет первым, а затем август и т.д. С помощью числа в имени папки, он гарантирует месяц возвращать в правильном порядке.
С помощью создаются папки теперь вы можете начать перемещать файлы изображений в соответствующие папки следующим образом:
mv img0001_01012015.jpg 2015/01_January/. mv img0002_02012015.jpg 2015/01_January/. mv img0003_05022015.jpg 2015/02_February/. mv img0004_13022015.jpg 2015/02_February/. mv img0005_14042015.jpg 2015/04_April/. mv img0006_17072015.jpg 2015/07_July/. mv img0007_19092015.jpg 2015/09_September/. mv img0008_01012016.jpg 2016/01_January/. mv img0009_02012016.jpg 2016/01_January/. mv img0010_03012016.jpg 2016/01_January/.
В каждой из строк кода выше изображения копируется в соответствующую папку: год и месяц на основе даты в имени файла.
Период (.) В конце строки означает то, что известно как метасимвол. Это в основном гарантирует , что файл сохраняет такое же имя.
В то время как файлы теперь красиво отсортированы по дате, было бы неплохо знать, что каждое изображение содержит. На самом деле единственный способ сделать это , чтобы открыть файл в программе просмотра изображений . После того, как вы узнаете о изображении, вы можете переименовать файл, используя команду mv следующим образом:
mv img0008_01015616.jpg oldyearfireworks.jpg
Что произойдет, если файл уже существует
Плохая новость заключается в том, что если переместить файл в папку, где уже имеется файл с таким же именем, то файл назначения перезаписывается.
Есть способы защитить себя. Вы можете сделать резервную копию файла назначения, используя следующий синтаксис.
mv -b test1.txt test2.txt
Это переименовывает test1.txt в test2.txt. Если есть уже test2.txt тогда станет test2.txt ~.
Другой способ, чтобы защитить себя, можно указать команде mv, сказать вам, если файл уже существует, а затем вы можете выбрать, следует ли переместить файл или нет.
mv -i test1.txt test2.txt
Если вы переносите сотни файлов, то вы, вероятно, напишите сценарий для выполнения перемещения. В этом случае вы не будете видеть сообщение с вопросом, хотите ли вы переместить файл или нет.
Вы можете использовать следующий синтаксис для перемещения файлов без перезаписи существующих файлов.
mv -n test1.txt test2.txt
Наконец, есть еще один переключатель, который позволяет обновлять файл назначения, если исходный файл более новый.
mv -u test1.txt test2.txt