копирование файлов, следующих из использования grep в новую папку

У меня есть вопрос относительно конкатенации двух процессов в терминале. У меня есть папка с более чем 50 000 файлов. Я использовал grep для поиска тех файлов, содержащих конкретный термин:

grep -inrl "Bioethik_Debatte" /var/cqp/upload/heideko/import_files

который дает мне огромный список как это:

/var/cqp/upload/heideko/import_files/26629.vrt
/var/cqp/upload/heideko/import_files/32862.vrt

Я должен скопировать получающиеся файлы в новую папку. Я думал что-то как:

grep -inrl "Bioethik_Debatte" /var/cqp/upload/heideko/import_files | cp * bio_files/

Моя попытка не могла бы иметь никакого смысла. Я только запускаю с терминала. Я просто хочу скопировать файлы, следующие из моего поиска grep в новую папку, названную bio_files. Я понял, что то, что я получаю от grep, является просто названиями файлов. Но я хочу использовать те имена в качестве входа для команды CP. Любая справка высоко ценится.

0
задан 15 May 2018 в 09:22

1 ответ

Использовать xargs и -t опция cp:

grep -inrl "Bioethik_Debatte" /var/cqp/upload/heideko/import_files | xargs cp -t bio_files/

Если Ваши файлы могли бы иметь пробелы на свои имена, то сделайте все разграниченным пустым указателем:

grep -inrlZ "Bioethik_Debatte" /var/cqp/upload/heideko/import_files | xargs -0 cp -t bio_files/
3
ответ дан 29 October 2019 в 07:59

Другие вопросы по тегам:

Похожие вопросы: