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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Скопировать файлы при выполнении условия  (Прочитано 562 раз)

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

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Здравствуйте.

Есть папка с txt файлами.
Нужно при наличии в файле слова АААА скопировать файл в другую папку.
Найти нужные файлы могу, cat *.txt| grep -r -o -E "AAAA", а вот как быть дальше?

Спасибо.

Оффлайн ARTGALGANO

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1936
    • Просмотр профиля
find -iname "*.txt" -exec grep -l "AAAA" "{}" \; -exec cp -a "{}" dir2/ \;??
 
« Последнее редактирование: 03 Июля 2018, 14:04:34 от ARTGALGANO »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6753
  • 20% Cooler
    • Просмотр профиля
grep -l AAAA ./*.txt | xargs -n1 cp -t ./some_folder
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
ARTGALGANO, работает, копирует. Спасибо.

ALiEN175, работает, копирует, кмк быстрее чем первый вариант. Спасибо.

А как быть если параметров несколько, типа такого АААА, BBBB, СССС?

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6753
  • 20% Cooler
    • Просмотр профиля
Ввысь, подставляйте в grep

Я еще пробелы в имени файлов не учел, но тут просто xargs надо указать разделитель  ;)

grep -El 'AAAA|BBBB|CCCC' ./*.txt | xargs -d "\n" -n1 cp -t ./some_folder
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
ALiEN175, спасибо), получил что хотел.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
пробелы в имени файлов
решается стандартно
grep -Z ... | xargs -0 ...
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6753
  • 20% Cooler
    • Просмотр профиля
Azure, -0
у меня не сработало
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Код: (html5) [Выделить]
grep -Zl '\[' * 2>/dev/null | xargs -0 printf "%s\n"
a.txt
bonus.m3u
itm.sh
s.sh
w.sh
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

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