найдите файлы с определенным текстом и скопируйте эти файлы в другой каталог

найдите файлы с определенным текстом и скопируйте эти файлы в другой каталог

Как мне найти файлы в каталоге, которые содержат определенный текст, и скопировать их в другой каталог? Я использую оболочку .ksh.

решение1

Сделайте man xargsи посмотрите на -Iфлаг.

find /path/to/directory -type f -exec grep -il "your pattern" {} \; | xargs -I % cp % /dest/dir/

Чтобы сэкономить время на ввод, поместите эту команду в скрипт оболочки:

#!/usr/bin/ksh 
# Script name: locate
find /path/to/directory -type f -exec grep -il "$1" {} \; | xargs -I % cp % /dest/dir/

Для запуска введите, locate searchstringгде searchstringнаходится текст, который вы ищете.

решение2

Вы можете просто сделать это из базового каталога, в котором вы хотите искать

cp $(grep -r -l "the pattern" *) target_directory
  • grep -rозначает возвратный
  • -lозначает перечисление пути к файлу, а не совпадений в нем.

  • помещение $()команды вокруг приведет к ее выполнению и размещению результата во внешней команде.

  • cp возьмет список файлов и, если последний путь является каталогом, скопирует их все туда.

Связанный контент