- Копировать существующие файлы без подтверждения?
- Как заставить cp перезаписывать без подтверждения
- 16 ответов
- Команда cp
- Описание команды cp
- Синтаксис
- Опции
- Примеры использования команды cp
- Скопировать файл в другую директорию
- Скопировать несколько файлов
- Скопировать файл с подтверждением
- Показать информацию о копируемых файлах
- Скопировать директорию
- Скопировать только если файлы новее
- Не перезаписывать существующие файлы
- Скопировать только атрибуты
- Создать резервную копию для результирующих файлов, если они существуют
- Принудительно перезаписывать существующие файлы назначения
- unixforum.org
- Решено: Копирование файлов без вопроса о замене (cp: переписать file?)
- Решено: Копирование файлов без вопроса о замене
- Re: Решено: Копирование файлов без вопроса о замене
- Re: Решено: Копирование файлов без вопроса о замене
- Re: Решено: Копирование файлов без вопроса о замене
- Re: Решено: Копирование файлов без вопроса о замене
- Re: Решено: Копирование файлов без вопроса о замене
- Re: Решено: Копирование файлов без вопроса о замене
- Копирование файлов в Linux
- Утилита копирования файлов cp
- Синтаксис и опции
- Примеры копирования файлов в linux
- Копирование файлов по регулярным выражениям в Linux
- Копирование содержимого файлов в Linux
- Специальное копирование файлов в Linux с помощью tar
- Выводы
Копировать существующие файлы без подтверждения?
Мне нужно скопировать и перезаписать большое количество файлов, я использовал следующую команду:
Но тогда, когда в папке назначения существует файл с таким же именем, я получаю этот вопрос:
Проблема в том, что у меня есть около 200 файлов, которые будут перезаписаны, и я не думаю, что нажатие Y then Enter 200 раз является правильным способом сделать это.
Итак, каков правильный путь к этому?
Вы можете сделать это yes | cp -rf myxx , или, если вы делаете это как root — ваш .bashrc или .profile имеет псевдоним cp к cp -i, большинство современных систем делают это с корневыми профилями.
Вы можете временно обойти псевдоним и использовать не псевдонимную версию команды, поставив перед ней префикс \, например, \ cp
Вы понимаете, что RHEL и CentOS пытались защитить начинающих пользователей, устанавливая псевдонимы для пользователя root, чтобы предотвратить случайную перезапись и удаление файлов?
Это -i то, что требует подтверждения при изменении или удалении существующих файлов. Поскольку расширение псевдонима происходит перед выполнением команды, даже использование —force -f коммутатора все еще требует подтверждения.
Вы можете удалить псевдоним навсегда, отредактировав /root/.bashrc файл, удалив псевдоним на время сеанса unalias cp или для одной команды, используя один из:
- использовать полный путь /bin/cp
- используйте кавычки «cp» или ‘cp’ вокруг команды
- используйте ключевое слово команды, например command cp
- избежать команды \cp
Источник
Как заставить cp перезаписывать без подтверждения
Я пытаюсь использовать команду cp и принудительно перезаписать.
Я пробовал cp -rf /foo/* /bar , но мне все равно предлагается подтверждать каждую перезапись.
16 ответов
Вы можете сделать yes | cp -rf xxx yyy , но мое чутье подсказывает, что если вы сделаете это как root — ваш .bashrc или .profile будет иметь псевдоним от cp до cp -i , большинство современные системы (в первую очередь производные RH) делают это с корневыми профилями.
Вы можете проверить существующие псевдонимы, запустив alias в командной строке или which cp , чтобы проверить псевдонимы только для cp .
Если у вас действительно определен псевдоним, запуск unalias cp отменит его для текущего сеанса, в противном случае вы можете просто удалить его из своего профиля оболочки.
Вы можете временно обойти псевдоним и использовать версию команды без псевдонима, добавив к ней префикс \ , например \cp whatever
Это не cp -i . Если вы не хотите, чтобы вас спрашивали о подтверждении, это cp -n ; Например:
Или в случае каталогов / папок:
Я просто использовал unalias для удаления псевдонима «cp -i», затем сделал копию, а затем снова установил псевдоним. :
Не самый красивый код, но простой в настройке и эффективный. Я также проверяю, что псевдоним уже установлен, с помощью простого
Если вы хотите сохранить псевдоним на глобальном уровне как есть и просто хотите изменить его для своего скрипта.
псевдоним cp = cp
А затем напишите свои последующие команды.
-n означает «не перезаписывать», но его вопрос полностью противоположен тому, на что вы ответили.
Чтобы избежать этого подтверждения, вы можете просто запустить команду cp с абсолютным путем, это позволит избежать псевдонима.
/ bin / cp назначение исходного файла
Источник
Команда cp
Описание команды cp
Синтаксис
что_копируем — файл, несколько файлов, директория или несколько директорий, которые необходимо скопировать.
куда_копируем — название файла, в который выполняется копирование другого файла, или директория, в которую копируются исходные файлы или директории.
Опции
МЕТОД определяет, каким образом формируется имя резервной копии. МЕТОД может принимать значения:
- none или off — не делать резервных копий, даже если включена опция —backup
- numbered или t — имя резервной копии получит числовой индекс (пример: myfile.txt
).
Например, при использовании команды cp —parents a/b/myfile dstdir , файл myfile будет скопирован в директорию dstdir/a/b . То есть будут созданы промежуточные директории.
КОГДА может принимать значения:
always — всегда создавать «легкую» копию файла. Создается ссылка на исходные данные. Фактического копирования данных не происходит. Блоки данных копируются только тогда, когда они изменяются.
auto — создается обычная полная копия.
КОГДА может принимать значения:
auto — (поведение по умолчанию) копировать разреженные файлы в разреженные файлы.
always — результирующий файл всегда разреженный, если в исходном есть достаточное количество нулевых последовательностей.
never — не делать результирующие файлы разреженными.
Примеры использования команды cp
Скопировать файл в другую директорию
Скопируем файл myfile.txt в директорию mydir :
Скопируем файл myfile1.txt в новый файл myfile2.txt
Скопировать несколько файлов
Для копирования нескольких файлов нужно перечислить их через пробел. Послений параметр определяет результирующую директорию, в которую будут скопированы файлы.
Скопировать файл с подтверждением
Выведем запрос на подтверждение перезаписи результирующего файла, если он существует:
Показать информацию о копируемых файлах
При использовании опции -v выводится информация о том, какие файлы и куда копируются.
Скопировать директорию
Чтобы скопировать директорию и все ее содержимое нужно использовать опцию -r
Скопировать только если файлы новее
Скопируем файлы вида myfile*.txt (например, это могут быть файлы myfile1.txt myfile10.txt myfile2.txt ) в директорию mydir , но если результирующий файл существует, то копирование выполняется только в том случае, если исходный файл новее.
Не перезаписывать существующие файлы
Чтобы существующие файлы не перезаписывались, используется опция -n
Скопировать только атрибуты
Скопируем только атрибуты файла. Содержимое файла не копируется.
Создать резервную копию для результирующих файлов, если они существуют
Скопируем файл myfile1.txt в файл myfile2.txt . Если файл myfile2.txt существует, то будет создана его резервная копия.
Принудительно перезаписывать существующие файлы назначения
Если файл назначения существует и не может быть открыт и удален, то можно использовать опцию -f , чтобы принудительно перезаписать такой файл:
Источник
unixforum.org
Форум для пользователей UNIX-подобных систем
- Темы без ответов
- Активные темы
- Поиск
- Статус форума
Решено: Копирование файлов без вопроса о замене (cp: переписать file?)
Модератор: Bizdelnick
Решено: Копирование файлов без вопроса о замене
Сообщение lexikon » 21.12.2009 00:17
//’ /home/verlichat/mainchat.log > /home/verlichat/chat.log && /home/verlichat/pisg
Re: Решено: Копирование файлов без вопроса о замене
Сообщение Bizdelnick » 21.12.2009 00:32
в консол и вку́пе (с чем-либо) в общем в ообще | в течени е (часа) нович ок нюанс п о умолчанию | приемл емо пробле ма проб овать тра фик |
Re: Решено: Копирование файлов без вопроса о замене
Сообщение SLEDopit » 21.12.2009 00:39
/.bashrc или /etc/bashrc или profile файлы).
проверьте и отключите.
Re: Решено: Копирование файлов без вопроса о замене
Сообщение lexikon » 21.12.2009 00:43
Re: Решено: Копирование файлов без вопроса о замене
Сообщение broom » 21.12.2009 00:46
Re: Решено: Копирование файлов без вопроса о замене
Сообщение lexikon » 21.12.2009 00:48
/.bashrc выручила
назойливых вопросов больше нет огромное спасибо!
Re: Решено: Копирование файлов без вопроса о замене
Сообщение broom » 21.12.2009 00:51
Источник
Копирование файлов в Linux
Копирование файлов — одна из задач, наиболее часто возникающих перед пользователями персонального компьютера. Конечно, можно открыть файловый менеджер, войти в нужную папку и скопировать файл с помощью контекстного меню — тут не о чем говорить. Но в этой статье я хотел бы рассмотреть копирование файлов в Linux с помощью терминала.
Не всегда есть доступ к файловому менеджеру: из-за различных поломок графическая оболочка на домашнем компьютере может быть недоступна, а на серверах используется только консольный интерфейс. К тому же копирование файлов Ubuntu через терминал намного эффективнее, и вы сами в этом убедитесь. Сегодня мы рассмотрим не только обычное копирование командой cp Linux, но и не совсем обычное: с помощью tar и find.
Утилита копирования файлов cp
Название утилиты cp — это сокращение от Copy, что означает копировать. Утилита позволяет полностью копировать файлы и директории.
Синтаксис и опции
Общий синтаксис cp выглядит вот так:
$ cp опции файл-источник файл-приемник
$ cp опции файл-источник директория-приемник/
После выполнения команды файл-источник будет полностью перенесен в файл-приемник. Если в конце указан слэш, файл будет записан в заданную директорию с оригинальным именем.
Утилита имеет несколько интересных опций, которые могут сильно помочь при нестандартных задачах копирования, поэтому давайте их рассмотрим:
- —attributes-only — не копировать содержимое файла, а только флаги доступа и владельца;
- -f, —force — перезаписывать существующие файлы;
- -i, —interactive — спрашивать, нужно ли перезаписывать существующие файлы;
- -L — копировать не символические ссылки, а то, на что они указывают;
- -n — не перезаписывать существующие файлы;
- -P — не следовать символическим ссылкам;
- -r — копировать папку Linux рекурсивно;
- -s — не выполнять копирование файлов в Linux, а создавать символические ссылки;
- -u — скопировать файл, только если он был изменён;
- -x — не выходить за пределы этой файловой системы;
- -p — сохранять владельца, временные метки и флаги доступа при копировании;
- -t — считать файл-приемник директорией и копировать файл-источник в эту директорию.
Примеры копирования файлов в linux
Теперь, когда вы знаете основные опции, можно перейти к практике. Например, мы хотим скопировать некую картинку из домашней папки в подкаталог pictures:
Или можем явно указать имя новой картинки:
Копирование папок осуществляется с помощью ключа -r:
После выполнения этой команды копирования
/папка будет скопирована в папку
/Документы. Главное, не забывайте поставить слэш в конце выражения или использовать опцию -t. Иначе папка
/документы будет перезаписана.
По умолчанию команда cp Linux перезаписывает существующие файлы или папки, но можно заставить утилиту спрашивать, нужно ли перезаписывать каждый файл, если вы не уверены в правильности составления команды:
Есть и противоположная опция -n, означающая «никогда не перезаписывать существующие файлы».
Опция -u полезна в следующем случае: вы знаете или предполагаете, что в директории, куда копируется файл, есть старая его версия, тогда оператор -u выполнит замену на новую версию:
Сp также поддерживает специальные символы замены * и ?. Например, следующая команда скопирует все файлы, начинающиеся на test:
Если нужно применить более сложные регулярные выражения, придётся комбинировать утилиту cp с find или egrep.
В случае, если важно сохранить права доступа к файлу и его владельца, нужно использовать опцию -p:
Для упрощения использования команды можно применять синтаксис фигурных скобок. Например, чтобы создать резервную копию файла, выполните:
Будет создан файл с таким же именем и расширением .bak
По умолчанию в cp не отображается прогресс копирования файла, что очень неудобно при работе с большими файлами, но его можно легко посмотреть с помощью утилиты cv.
Копирование файлов по регулярным выражениям в Linux
В утилите find можно применять различные условия и регулярные выражения для поиска файлов. Я уже немного писал о ней в статье как найти новые файлы в Linux. Мы можем скопировать все найденные с помощью find файлы, вызвав для каждого из них команду cp. Например, копируем все файлы в текущей директории, содержащие в имени только цифры:
find . -name 4 -exec cp <>
Здесь точка указывает на текущую директорию, а параметр name задает регулярное выражение. Параметром exec мы задаем, какую команду нужно выполнить для обнаруженных файлов. Символ <> — подставляет имя каждого файла.
Но не find‘ом единым такое делается. То же самое можно получить, запросив список файлов директории в ls, отфильтровав его по регулярному выражению egrep и передав имена файлов по очереди в cp с помощью xargs:
/ | egrep ‘[a-zA-Z]’ | xargs cp -t
Это не совсем удобный способ копировать файлы Linux, но всё же он возможен. Будут скопированы все файлы из домашней директории, содержащие в имени только английские буквы.
Копирование содержимого файлов в Linux
Вы можете не только копировать сами файлы, но и управлять их содержимым. Например, склеить несколько файлов в один или разрезать файл на несколько частей. Утилита cat используется для вывода содержимого файла, в комбинации с операторами перенаправления вывода Bash вы можете выполнять копирование содержимого файла Linux в другой файл. Например:
cat файл1 > файл2
Если файл был не пустым, он будет перезаписан. Или мы можем склеить два отдельных файла в один:
cat файл1 файл2 > файл3
Специальное копирование файлов в Linux с помощью tar
Linux интересен тем, что позволяет выполнять одно и то же действие различными путями. Копирование в Linux тоже может быть выполнено не только с помощью cp. При переносе системных файлов в другой каталог, резервном копировании системных файлов и т.д. важно чтобы сохранились атрибуты, значения владельцев файлов и символические ссылки как они есть без какой-либо модификации.
Утилита cp тоже может справиться с такой задачей? если указать опцию -p, но можно использовать утилиту архивации tar. Мы не будем создавать никаких файлов архивов, а построим туннель. Первая часть команды пакует файл и отправляет на стандартный вывод, а другая сразу же распаковывает в нужную папку:
tar cf — /var | ( cd /mnt/var && tar xvf — )
Здесь мы полностью копируем содержимое папки /var в папку /mnt/var. Так вы можете копировать папку Linux, причём абсолютно любую или даже целую операционную систему.
Выводы
Теперь вы знаете, как выполняется копирование файлов Ubuntu и в Linux в целом. Как видите, в терминале это выполняется намного быстрее и эффективнее, чем с помощью графического интерфейса, если помнить нужные команды. Если у вас остались вопросы, спрашивайте в комментариях!
Источник