9.14. Копирование, перемещение и переименование файлов и каталогов
Проблема
В системе существуют каталоги и файлы. Как перенести файл в другой каталог? Как сменить имя файла? И как создать его копию?
Решение
Воспользуйтесь командами cp
и mv
.
Следующая команда копирует два файла из текущего рабочего каталога в каталог ~/images2
:
$ cp -v navbar.gif redheart.gif ~/images2
'navbar.gif -> /home/terri/images2/navbar.gif'
'redheart.gif -> /home/terri/images2/redheart.gif'
При перезаписи файлов можно воспользоваться ключом -b
для создания резервных копий старых файлов в приёмном каталоге:
$ cp -bv icon-zip.gif main.gif ~/data2
'icon-zip.gif -> /home/terri/data2/icon-zip.gif (backup: /home/terri/data2/icon-zip.gif~)'
'main.gif -> /home/terri/data2/main.gif (backup: /home/terri/data2/main.gif~)'
Для сохранения полного пути к файлу используется ключ --parents
:
$ cp -v --parents ~/homes/images/kitchen.jpg ~/data2
'home/terri/homes/images/kitchen.jpg -> home/terri/data2/homes/images/kitchen.jpg'
Ключ -s
создаёт мягкие ссылки на файлы вместо их копирования:
$ cp -s navbar.gif redheart.gif ~/images2
Ключ -r
копирует каталог со всеми подкаталогами:
$ cp -rv ~/homes/images/ /shared/archives
Операции перемещения и переименования осуществляются командой mv
. Следующая команда перемещает два файла в другой каталог:
$ mv -v about.gif arrow.gif ~/data2
'about.gif -> /home/terri/data2/about.gif'
'arrow.gif -> /home/terri/data2/arrow.gif'
Пример переименования файла:
$ mv -v downloads.gif email.gif
'downloads.gif -> email.gif'
Комментарий
В графических файловых оболочках (таких, как Nautilus, Konqueror, Midnight Commander, Gentoo File Manager, gmc и Rox Filer) операции переименования и копирования обычно выполняются быстрее и проще. Эти интерфейсы позволяют выполнять сложные действия с файлами с минимальными усилиями и могут быть предпочтительны для пользователей, которые отдают предпочтение визуальным инструментам.
Использование командной строки, однако, даёт больше гибкости и контроля над операциями с файлами, особенно когда нужно автоматизировать процессы или работать с большим количеством файлов и каталогов. Это особенно важно при работе с серверами, где нет графического интерфейса.
Вы можете настроить копирование с сохранением временных меток, прав доступа и других атрибутов с помощью ключа -a
(архивный режим). Например:
$ cp -av ~/images/ /backup/
Таким образом, все важные атрибуты файлов будут сохранены при копировании. Это полезно для резервного копирования или миграции данных между системами.
См. также
cp(1), mv(1), rsync(1); документация по командам GNU Core Utilities (https://www.gnu.org/software/coreutils/manual/coreutils.html).