Как в Linux найти файл по его содержимому

Как же всё-таки можно найти файл в Linux по его содержимому, а для усложнения этого процесса допустим, что нам нужно ещё найти не один файл, а  несколько файлов и перенести их в какую нибудь директорию. Я уже писал о замечательной команде find, которая может найти файл по названию или поменять права и владельца для нескольких директорий и файлов одновременно. Вот и здесь давайте используем find для этих целей, но в связке с командами xargs и grep.

Допустим нам нужно найти все файлы в которых содержится какой-нибудь текст, например: «comments», и перенести их в директорию находящийся по пути /home/user/comments/

Открываем терминал и набираем:

find . -type f |xargs grep -l comments |xargs mv -t /home/user/comments

или (более переносимо)

find. -type f |xargs grep -l comments |xargs sh -c 'mv "$@" /home/user/comments' sh

или (по одному)

find . -type f -exec grep -l comments '{}' \; -exec mv '{}' /home/user/comments/ \;

Конечно же для простого копирования можно использовать вместо mv команду cp

Как в Linux найти файл по его содержимому
Пожалуйста оцените эту статью

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *