Grep для возврата всего содержимого файла

Попробуйте это

#!/bin/bash
#
#   upt - show just the system uptime, days, hours, and minutes

let upSeconds="$(cat /proc/uptime) && echo ${temp%%.*})"
let secs=$((${upSeconds}%60))
let mins=$((${upSeconds}/60%60))
let hours=$((${upSeconds}/3600%24))
let days=$((${upSeconds}/86400))
if [ "${days}" -ne "0" ]
then
   echo -n "${days}d"
fi
echo -n "${hours}h${mins}m"
1
задан 18 April 2018 в 04:05

6 ответов

Если ваша папка не так велика, попробуйте:

grep -rz '.*MyWord.*' myfolder > output

при необходимости добавьте -a

0
ответ дан 17 July 2018 в 16:37

Я бы использовал:

sudo grep -rIlZ --exclude=${HISTFILE##*/} --exclude-dir={boot,dev,lib,media,mnt,proc,root,run,sys,/tmp,tmpfs,var} '/' -e 'MyWord' | xargs -0 cat > MyOutputFile Drop sudo, если вы не смотрите в системные каталоги. Изменить (корневой каталог) '/' в текущий каталог '.' или конкретный каталог, т.е. '/home/me/stuff' Удалить mnt, чтобы включить файлы Windows, установленные в mnt. Удалите lib, чтобы включить исходные файлы Linux Исключая каталоги, необходимые для скорости. См. «Grep» для всех файлов для строки требуется много времени --exclude=${HISTFILE##*/} необходимо, если вы запустите команду второй раз или если ранее использовалась строка поиска MyWord в другой команде. Это предотвращает включение 5 тысяч строк истории ($ HISTFILE). -r recursive, I пропускают двоичные файлы, lZ выводит нулевой байт после каждого имени файла вместо обычной новой строки. Нулевые (нулевые байт) терминаторы, необходимые для perl -0, sort -z и xargs, используемые для cat (распечатывают) содержимое файла. > MyOutputFile отправляет вывод в файл вместо экрана. Оставьте это для вывода на экран.

Примечание: Отсутствует на выходе имя файла, только содержимое файла указано.

2
ответ дан 17 July 2018 в 16:37

Вы также можете использовать find с grep:

find . -type f -exec grep -wq 'MyWord' {} \; -exec cat {} >> /path/to/outfile \;

. Это найдет файлы, содержащие слово «MyWord», рекурсивно и вполне, как только будет найдено первое совпадение, а затем перенаправить содержимое всего файла в новый файл.

1
ответ дан 17 July 2018 в 16:37

Если ваша папка не так велика, попробуйте:

grep -rz '.*MyWord.*' myfolder > output

при необходимости добавьте -a

0
ответ дан 23 July 2018 в 17:29

Я бы использовал:

sudo grep -rIlZ --exclude=${HISTFILE##*/} --exclude-dir={boot,dev,lib,media,mnt,proc,root,run,sys,/tmp,tmpfs,var} '/' -e 'MyWord' | xargs -0 cat > MyOutputFile Drop sudo, если вы не смотрите в системные каталоги. Изменить (корневой каталог) '/' в текущий каталог '.' или конкретный каталог, т.е. '/home/me/stuff' Удалить mnt, чтобы включить файлы Windows, установленные в mnt. Удалите lib, чтобы включить исходные файлы Linux Исключая каталоги, необходимые для скорости. См. «Grep» для всех файлов для строки требуется много времени --exclude=${HISTFILE##*/} необходимо, если вы запустите команду второй раз или если ранее использовалась строка поиска MyWord в другой команде. Это предотвращает включение 5 тысяч строк истории ($ HISTFILE). -r recursive, I пропускают двоичные файлы, lZ выводит нулевой байт после каждого имени файла вместо обычной новой строки. Нулевые (нулевые байт) терминаторы, необходимые для perl -0, sort -z и xargs, используемые для cat (распечатывают) содержимое файла. > MyOutputFile отправляет вывод в файл вместо экрана. Оставьте это для вывода на экран.

Примечание: Отсутствует на выходе имя файла, только содержимое файла указано.

2
ответ дан 23 July 2018 в 17:29
  • 1
    Как записать его в выходной файл? – Baron Yugovich 18 April 2018 в 02:11
  • 2
    @BaronYugovich Я протестировал cat > MyOutputFile и исключил из вывода 5 тысяч строк файла истории терминала bash. – WinEunuuchs2Unix 18 April 2018 в 03:01
  • 3
    Отличный ответ (+1)! – JJoao 11 May 2018 в 13:47

Вы также можете использовать find с grep:

find . -type f -exec grep -wq 'MyWord' {} \; -exec cat {} >> /path/to/outfile \;

. Это найдет файлы, содержащие слово «MyWord», рекурсивно и вполне, как только будет найдено первое совпадение, а затем перенаправить содержимое всего файла в новый файл.

1
ответ дан 23 July 2018 в 17:29
  • 1
    Как записать его в выходной файл? – Baron Yugovich 18 April 2018 в 02:01
  • 2
    Благодарю. У меня есть еще одно продолжение: результирующие файлы иногда являются бинарными, каков наилучший способ их просмотра в виде текста? Это кешированные файлы Mozilla Firefox из истории браузера. – Baron Yugovich 18 April 2018 в 02:24
  • 3
    для чтения двоичного файла в виде текстового файла вы можете добавить параметр -a к grep выше, если у вас есть GNU grep. – αғsнιη 18 April 2018 в 05:40

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

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