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).