Программирование в стандарте POSIX


Создание, удаление, копирование и перемещение файлов - часть 8


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

По опции -i   запрашивается подтверждение перед замещением существующего файла, опция -f влечет отсутствие подобных запросов (по поводу логики запроса подтверждений см. выше описание команды rm).

Приведем пример употребления утилиты mv. Пусть текущий каталог содержит только файлы   x и y и пустой каталог   d1 (см. пример 4.43). Тогда после выполнения команд, показанных в пример 4.44, будет создан каталог   d2, где окажутся файлы   x и y, а каталог   d1 исчезнет (см. пример 4.45).

.: d1/ x y ./d1:

Листинг 4.43. Состояние текущего каталога перед перемещением файлов.

ls -RF mv x y d1 mv d1 d2 ls -RF

Листинг 4.44. Использование утилиты mv для перемещения файлов и файловых иерархий.

.: d2/ ./d2: x y

Листинг 4.45. Состояние текущего каталога после перемещения файлов.

Продолжим этот пример двумя одинаковыми командами копирования (см. пример 4.46).

cp -R d2 d1 cp -R d2 d1 ls -RF

Листинг 4.46. Применение утилиты cp для копирования файловых иерархий.

Первая команда скопирует иерархию с корнем d2 во вновь созданный каталог   d1, вторая - под d1 (с сохранением имени d2 для корня копии). Результат показан в пример 4.47.

.: d1/ d2/ ./d1: d2/ x y ./d1/d2: x y ./d2: x y

Листинг 4.47. Результат использования утилиты cp для копирования файловых иерархий.

Для перемещения (переименования) одного файла служит функция rename() из репертуара C99 (см. пример 4.48).

#include <stdio.h> int rename (const char *old_path, const char *new_path);

Листинг 4.48. Описание функции rename().

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


Начало  Назад  Вперед



Книжный магазин