Попробуйте это
#!/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"
Если ваша папка не так велика, попробуйте:
grep -rz '.*MyWord.*' myfolder > output
при необходимости добавьте -a
Я бы использовал:
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 отправляет вывод в файл вместо экрана. Оставьте это для вывода на экран. Примечание: Отсутствует на выходе имя файла, только содержимое файла указано.
Вы также можете использовать find с grep:
find . -type f -exec grep -wq 'MyWord' {} \; -exec cat {} >> /path/to/outfile \;
. Это найдет файлы, содержащие слово «MyWord», рекурсивно и вполне, как только будет найдено первое совпадение, а затем перенаправить содержимое всего файла в новый файл.
Если ваша папка не так велика, попробуйте:
grep -rz '.*MyWord.*' myfolder > output
при необходимости добавьте -a
Я бы использовал:
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 отправляет вывод в файл вместо экрана. Оставьте это для вывода на экран. Примечание: Отсутствует на выходе имя файла, только содержимое файла указано.
Вы также можете использовать find с grep:
find . -type f -exec grep -wq 'MyWord' {} \; -exec cat {} >> /path/to/outfile \;
. Это найдет файлы, содержащие слово «MyWord», рекурсивно и вполне, как только будет найдено первое совпадение, а затем перенаправить содержимое всего файла в новый файл.