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


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

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

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

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

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

Есть папка с 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 »

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4249
  • Capture the truth
    • Просмотр профиля
grep -l AAAA ./*.txt | xargs -n1 cp -t ./some_folder
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

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

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

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

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

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4249
  • Capture the truth
    • Просмотр профиля
Ввысь, подставляйте в grep

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

grep -El 'AAAA|BBBB|CCCC' ./*.txt | xargs -d "\n" -n1 cp -t ./some_folder
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

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

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

Оффлайн Azure

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

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4249
  • Capture the truth
    • Просмотр профиля
Azure, -0
у меня не сработало
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн Azure

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

 

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