Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Скрипт удаления каталогов по признаку в имени.  (Прочитано 724 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 190
    • Просмотр профиля
Всем привет!

Подскажите как удалить все каталоги содержащие в имени 'veth', кроме тех которые указанны в переменной.
#!/bin/bash
RVETH=$(ifconfig -a | awk '/veth/ {print $1}') # получили, и объявили переменной уникальные символы содержащиеся в именах каталогов которые не надо удалять
cd /var/lib/collectd/rrd/chevengur; ls | grep 'veth' | # перешли в каталог где содержатся каталоги содержащие в имени 'veth', грепнули по 'veth', теперь надо удалить все каталоги содержащие в имени 'veth', кроме тех которые содержат в имени символы объявленные в переменной.
На всякий случай пример вывода:
# ifconfig -a | awk '/veth/ {print $1}'
veth852DBH
vethBRU9YY
vethES3K04
vethS6DBM7
Помогите пожалуйста... 

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6016
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Код: Bash
  1. #!/bin/bash
  2. RVETH=$(ifconfig -a | grep -o '^veth\S*')
  3. cd /var/lib/collectd/rrd/chevengur
  4. printf '%s\n' *veth* | grep -Fvf <(echo "$RVETH")
« Последнее редактирование: 18 Август 2015, 01:20:39 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 190
    • Просмотр профиля
спасибо за отклик.
но удаления то нет, с первыми двумя строками согласен.
Цитировать
# перешли в каталог где содержатся каталоги содержащие в имени 'veth', грепнули по 'veth', теперь надо удалить все каталоги содержащие в имени 'veth', кроме тех которые содержат в имени символы объявленные в переменной.

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6016
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
kolesov,
Ну так удаляйте, кто Вам не дает. Список выдает правильный?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн kolesov

  • Автор темы
  • Участник
  • *
  • Сообщений: 190
    • Просмотр профиля
#!/bin/bash
RVETH=$(ifconfig -a | grep -o '^veth\S*')
cd /var/lib/collectd/rrd/chevengur
printf '%s\n' *veth* | grep -Fvf <(echo "$RVETH") | xargs -i rm -rf '{}'
так работает. а почему вы предложили grep вместо awk?
« Последнее редактирование: 20 Август 2015, 23:54:43 от kolesov »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6016
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
а почему вы предложили grep вместо awk?
awk — это целый "комбайн", почти отдельный язык. Если Вам надо ямку выкопать, Вы берете лопату или экскаватор пригоняете? А grep как раз под такую задачу и узкоспециализированно "затачивался" и его за столько лет так "наоптимизировали" что быстрее него вряд ли что есть.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.081 секунд. Запросов: 24.