Как cp копировать и исключать внутренние файлы или каталоги (эквивалент rsync –exclude)

Если бы я попросил вас упомянуть команду для копирования папки в другое место, почти каждый упомянул бы cp.

Теперь, если я скажу вам, что, кроме того, вы должны скопировать все содержимое этой папки, кроме 1 файла, многие подумают, а другие упомянут Rsync, то с параметром –Exclude вы можете исключить файл или папку X и не копировать их. Но ... знаете ли вы, что cp также позволяет это делать? ... О_О … Да друзья, cp есть своя «исключить» хе-хе.

Например, у нас есть папка ISOS Он содержит: Убунту.исо, debian.iso y ArchLinux.iso :

И бывает, что мы хотим скопировать в другую папку (дистрибутивы-deb, который пуст) файл debian.iso y Убунту.исо, то есть все, кроме archlinux.iso

Для этого мы можем скопировать один файл, а затем другой, вручную, но гораздо разумнее использовать параметры, которые предлагает нам система, верно? … 😀… например, чтобы сделать это просто:

cp isos/!(archlinux.iso) distros-deb/

И этого достаточно, чтобы скопировать ВСЕ, что находится в каталоге isos, в distros-deb, кроме archlinux.iso 😉

Но предположим, что у нас есть не только эти 3 файла, но также есть fedora.iso и chakra.iso ... и мы хотим сделать то же самое, он также будет исключен из копии fedora.iso и chakra.iso, давайте посмотрим, как это сделать:

cp isos/!(archlinux.iso|fedora.iso|chakra.iso) distros-deb/

Как видите, можно исключить несколько файлов или папок, мы только разделяем их вертикальной чертой (|) и вопрос решен 😀

Под этим я не имею в виду, что cp лучше для всего, чем rsync ... но оба являются отличными инструментами, например ... знаете ли вы параметр -u de cp? ... хе-хе, конечно, нет 😉

Что ж, добавить больше нечего ... это интересный совет? 😀

привет


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Джош сказал

    Я этого метода не знал, всегда узнаешь что-то новое.
    Отличный совет, спасибо.

    1.    КЗКГ ^ Гаара сказал

      Благодарю вас!

  2.   Croto сказал

    Наконечник очень хороший, я этого не знала! Осталось только объяснить пользователям Arch и Fedora, почему вы исключили их iso-файлы хе-хе.

    1.    КЗКГ ^ Гаара сказал

      JAJAJAJAJAJA Я не размещал ISO-образы Arch и Fedora, потому что в примере пытались скопировать только дистрибутивы Deb… HAHAHAHAHA.

  3.   гексборг сказал

    Здесь необходимо отметить пару моментов. Во-первых, это работает, только если в bash включена опция extglob. Если это не так, его активируют с помощью этой команды:

    магазин -s extglob

    Его можно поместить в .bashrc, чтобы он всегда был активен.

    Другой момент в том, что этот трюк не является опцией команды cp, но он работает на уровне bash. Это означает, что его можно использовать с любой командой. Не только с cp. Вы можете пройти тест, написав:

    эхо-файлы: isos /! (archlinux.iso | fedora.iso | chakra.iso)

    В противном случае это очень полезный трюк. Наряду с параметром -u для cp, который я также считаю полезным время от времени.

    1.    Даниэль Рохас сказал

      Конечно, это регулярное выражение

      1.    гексборг сказал

        На самом деле это расширенный паттерн. Регулярное выражение - это нечто другое, но похоже на него. 🙂

    2.    КЗКГ ^ Гаара сказал

      Да, ключ -u в cp действительно интересен. Я признаю, что я большой поклонник rsync ... но я не знаю, у меня есть привязанность к бедному cp, хахаха.

      Насчет активации шопта я не знал, предполагал, что это сработало автоматически, спасибо за подсказку.

      И да, я подозревал, что это больше связано с Bash, чем с cp, но я еще не пробовал создать rm, cat или что-то в этом роде :)

      Спасибо за комментарий, правда

      1.    гексборг сказал

        Мне приятно внести свой вклад. 🙂

        1.    КЗКГ ^ Гаара сказал

          На самом деле, мне всегда было интересно узнать о регулярных выражениях ... вы взволнованы и пишете об этом новичку? 😀

          1.    гексборг сказал

            СМЕШНО!! Я у тебя уже есть. 🙂 Каким счастьем я был без комментариев… 🙂

            Ну правда в том, что он мне звонит. 🙂 Но мне еще нужно немного подумать. Это сложно объяснить.

            1.    КЗКГ ^ Гаара сказал

              хахахахаха ничего, не волнуйся, ты продолжаешь комментировать, что ты все еще учишься ахахахаха, важно поделиться 😀


  4.   туфадорин сказал

    Очень хороший совет Вы никогда не лягте спать, не узнав что-то новое.

    1.    КЗКГ ^ Гаара сказал

      Точно, и лучше всего то, что я многому учусь из комментариев, которые вы оставляете к постам. Я люблю узнавать странные вещи каждый день, ХАХАХА.

  5.   Жискар сказал

    Хорошая уловка. Я его не знал 🙂

    1.    КЗКГ ^ Гаара сказал

      Удовольствие 😉

  6.   @Jlcmux сказал

    Но когда вы помещаете isos, вы имеете в виду поставить debian.iso ubuntu.iso /! (И т. Д.)? нет

  7.   Хебер сказал

    Действительно, это оказался очень интересный совет. Не только из-за самой статьи, но и из-за дополнительной ценности комментариев.
    Красивое сообщество <º Linux

  8.   МАРТА ДЕЛЬ ПОСО сказал

    Ваша помощь мне не нужна, вы должны привести пример, чтобы студенты могли лучше понять вашу великолепную технику.
    Спасибо, что нашли время, я всегда буду помнить эту страницу в своем сердце

  9.   felipe016 сказал

    вы говорите, что пропускаете каталоги, однако в примерах вы пропускаете только файлы, знаете ли вы, как пропустить конкретный каталог? С уважением.