2014-02-13 2 views
0

В настоящее время у меня есть 3TB данных на диске с небольшими и средними файлами в сотнях папок. Мне нужно найти определенные текстовые файлы, содержащие определенные слова (более одного слова). Я уже пробовал grep-ping для них. Это работает, когда он печатает путь к каждому файлу. Но это длинный список, и теперь я ищу подходящий способ скопировать их в другую папку.Нужна небольшая помощь, мне нужен правильный синтаксис для grep и copy

любые идеи?

Есть ли способ разместить -exec cp -rv/estinationfolder в синтаксисе и скопировать все результаты в папку?

+0

Вы не упомянули об этом в своем вопросе: является ли файл совпадением, если он содержит все слова, или это совпадение, даже если оно содержит только один из них? – sanmiguel

ответ

0

Да, конечно, есть способ.

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

Вот пример,

find . -type f | xargs grep -l "textToSearch" | cpio -pV $destination_path 

этот скрипт будет копировать файлы на пути назначения, представленной в destination_path переменной

Лучшая часть с этим, он будет копировать файлы, сохраняя при этом полный путь.

+0

что произойдет, если файлы содержат пробелы? (ничего хорошего). Вы проверяли свой ответ на особые случаи? –