Если текст хранится как обычный текст внутри файла документа (независимо от того, состоит ли сам файл целиком из обычного текста), вы можете искать его из командной строки с рекурсивным grep. Это не требует индексации в первую очередь, но поиск по всем вашим файлам занимает очень много времени, поэтому, если вам понадобится сделать это более чем пару раз для всего вашего диска, вместо этого вы должны использовать утилиту поиска индексирования (как в этом answer). Откройте окно терминала (Ctrl + Alt + T). Измените каталог на вершину того, что вы хотите найти. Например, чтобы искать все в своем домашнем каталоге, сделайте cd ~. Чтобы выполнить поиск всего на вашем компьютере, сделайте cd /. Для поиска всего на внешнем диске DocDrive do cd /media/DocDrive. Если каталог имеет пробелы в своем имени, заключите его в кавычки (например, cd '/media/Documents Drive'. Запустите рекурсивный grep следующим образом: grep -Rs 'word or phrase you are looking for' .
В качестве альтернативы вы можете пропустить шаг 2 и вместо cd в папку, в которую вы хотите заглянуть внутрь, замените . на шаге 3 именем папки, которую вы хотите просмотреть внутри.
Если вы хотите выполнить поиск по всем файлам, включая те, к которому вы обычно не имеете доступа, вы можете запустить grep в качестве обычного текста с помощью sudo:
sudo grep -Rs 'word or phrase you are looking for' .
Обновление 2016: Если вы используете GNU coreutils> = 8.24 (по умолчанию в Ubuntu Xenial 16.04 вверх), см. метод 2 ниже для альтернативного способа отображения прогресса.
Установите pv и поместите его между командами ввода / вывода только dd.
Примечание: вы не можете использовать его, когда вы уже начали [ f14].
Обновление 2016
pv - Pipe Viewer - это терминал-инструмент для мониторинга прогресса данных по конвейеру. Он может быть вставлен в любой нормальный конвейер между двумя процессами, чтобы дать визуальную индикацию того, как быстро проходят данные, сколько времени прошло, насколько оно близко к завершению, и оценить, как долго это будет до завершения.Установка
sudo apt-get install pv
Установка
dd if=/dev/urandom | pv | dd of=/dev/null
Выход
1,74MB 0:00:09 [ 198kB/s] [ <=> ]
Вы можете указать приблизительный размер с --size, если вы хотите оценить время.
Выход
Команда без pv будет :
sudo dd if=/dev/sdb of=DriveCopy1.dd bs=4096
Команда с pv:
sudo dd if=/dev/sdb | pv -s 2G | dd of=DriveCopy1.dd bs=4096
Выход:
440MB 0:00:38 [11.6MB/s] [======> ] 21% ETA 0:02:19
Другое использование [ ! d27]
Вы можете, конечно, использовать pv для прямого вывода вывода на stdout:
pv /home/user/bigfile.iso | md5sum
Другие используют
50,2MB 0:00:06 [8,66MB/s] [=======> ] 49% ETA 0:00:06
[d32 ] Обратите внимание, что в этом случае pv автоматически распознает размер. dd в GNU Coreutils 8.24+ (Ubuntu 16.04 и новее) получил новую опцию status для отображения прогресса:
dd if=/dev/urandom of=/dev/null status=progress
462858752 bytes (463 MB, 441 MiB) copied, 38 s, 12,2 MB/s
Несколько удобных примеров использования с pv и менее типизация или больше прогресса, чем другие ответы:
Сначала вам нужно будет установить pv с помощью команды:
sudo apt-get install pv
Тогда некоторые примеры:
pv -n /dev/urandom | dd of=/dev/null
pv -tpreb source.iso | dd of=/dev/BLABLA bs=4096 conv=notrunc,noerror
Примечание: первый образец не более 5 символов, а затем dd if=/dev/urandom | pv | dd of=/dev/null.
И мой любимый для клонирования диск:
(pv -n /dev/sda | dd of=/dev/sdb bs=128M conv=notrunc,noerror) 2>&1 | dialog --gauge "Running dd command (cloning), please wait..." 10 70 0
источник: http://www.cyberciti.biz/faq/linux-unix -dd-command-show-progress-while-coping /
Также для архивирования.
Используйте Ctrl + Shift + T, пока dd запущен, и он выведет прогресс (в байтах):
load: 1.51 cmd: dd 31215 uninterruptible 0.28u 3.67s
321121+0 records in
321120+0 records out
164413440 bytes transferred in 112.708791 secs (1458745 bytes/sec)
Для полноты:
Версия 8.24 GNU coreutils включает патч для dd, вводящий параметр для печати прогресса.
У коммита, представляющего это изменение, есть комментарий :
dd: новый статус = уровень прогресса для периодической печати статистикиМногие дистрибутивы, включая GNU coreutils , используют эту версию.
Лучше всего использовать http://dcfldd.sourceforge.net/, его легко установить через apt-get
Пользовательский статус статуса был добавлен в dd !!!
Новая версия Coreutils (8.24) добавляет статус прогресса в инструмент dd:
Использование на Xubuntu 15.10 :
Откройте терминал и введите следующие команды:
wget ftp://ftp.gnu.org/pub/gnu/coreutils/coreutils-8.24.tar.xz
tar -xf coreutils-8.24.tar.xz
cd coreutils-8.24
./configure && make -j $(nproc)
Запустите dd как root:
sudo su
cd src
./dd if=/dev/sdc of=/dev/sda conv=noerror status=progress
Вы увидите: Bytes, seconds
Чтобы проверить версии dd:
Родной:
dd --version
Новое:
[ f4]Если вы уже запустили dd, и если вы пишете файл, например, при создании копии pendrive на диск, вы можете использовать команду watch для постоянного наблюдения за размером выходного файла, чтобы увидеть изменения и оценить завершение .
watch ls -l /pathtofile/filename
Чтобы увидеть только размер файла (h-human view):
watch ls -sh /pathtofile/filename
Триада dd | pv | dd сделала мою копию объемом 50GB vm за 800 секунд, в отличие от 260 секунд, используя только dd. С этим конвейером, по крайней мере, pv не имеет представления о том, насколько велик входной файл, поэтому он не сможет рассказать вам, насколько далеко вы находитесь, поэтому нет никакого недостатка в этом, как показано ниже, и вы получаете хорошее преимущество скорости:
Я бы избегал pv на любом большом и (если использовал Bash):
Control-Z процесс dd
bg, чтобы поместить его в фоновый режим , Обратите внимание, что bg даст вам выход, например [1] 6011, где последний номер является идентификатором процесса. Итак, do:
while true; do kill -USR1 process_id ; sleep 5; done
где process_id - это идентификатор процесса, который вы наблюдали. Hit Control-C, когда вы видите что-то вроде:
[1]+ Done dd if=/path/file.qcow2 of=/dev/kvm/pxetest bs=4194304 conv=sparse
-bash: kill: (60111) - No such process
Вы закончили.
Редактировать: Silly Systems Administrator! Автоматизируйте свою жизнь, не работайте! Если у меня есть длинный dd-процесс, который я хочу контролировать, вот один лайнер, который позаботится обо всем энчилада для вас; поместите это все в одну строку:
dd if=/path/to/bigimage of=/path/to/newimage conv=sparse bs=262144 & bgid=$!; while true; do sleep 1; kill -USR1 $bgid || break; sleep 4; done
Вы можете, конечно, записать сценарий, возможно, заработаете $ 1 ваш входной файл и $ 2 ваш выходной файл. Это остается как упражнение для читателя. Обратите внимание, что вам нужен этот маленький сон перед убийством или смерть может умереть, чтобы отправить сигнал на dd, когда он еще не готов. Отрегулируйте свои спящие по желанию (возможно, вообще удалите второй сон).
Bash- FTW! : -
)http://linuxcommando.blogspot.com/2008/06/show-progress-during-dd-copy.html
В принципе:
kill -USR1 < dd pid >
Ubuntu 16.04 поставляется с версией dd (coreutils) версии 8.25. Следовательно, опция status=progress поддерживается: -)
Чтобы использовать ее, просто добавьте status=progress вместе с вашей командой dd.
Пример:
dd bs=4M if=/media/severus/tools-soft/OperatingSystems/ubuntu-16.04-desktop-amd64.iso of=/dev/null status=progress && sync
Дает статус как
1282846183 bytes (1.2 GiB, 1.1 GiB) copied, 14.03 s, 101.9 MB/s
dd if=... of=... bs=4M status=progress oflag=dsync
oflag=dsync будет синхронизировать вашу запись, поэтому информация из status=progress более точна. Однако это может быть немного медленнее.
Я создал обертку bash над dd, которая будет использовать pv для отображения прогресса. Поместите его в свой .bashrc и используйте dd, как обычно:
# dd if=/dev/vvg0/root of=/dev/vvg1/root bs=4M
2GB 0:00:17 [ 120MB/s] [===========================================================>] 100%
0+16384 records in
0+16384 records out
2147483648 bytes (2.1 GB) copied, 18.3353 s, 117 MB/s
Источник:
dd()
{
local dd=$(which dd); [ "$dd" ] || {
echo "'dd' is not installed!" >&2
return 1
}
local pv=$(which pv); [ "$pv" ] || {
echo "'pv' is not installed!" >&2
"$dd" "$@"
return $?
}
local arg arg2 infile
local -a args
for arg in "$@"
do
arg2=${arg#if=}
if [ "$arg2" != "$arg" ]
then
infile=$arg2
else
args[${#args[@]}]=$arg
fi
done
"$pv" -tpreb "$infile" | "$dd" "${args[@]}"
}
Мне очень нравится ddrescue, он работает как dd, но дает результат и не терпит неудачу при ошибках, напротив, имеет очень продвинутый алгоритм, который действительно пытается сделать успешную копию ... Есть также много графических интерфейсов для это
Проект: https://www.gnu.org/software/ddrescue
Википедия: https://www.gnu.org/software/ddrescue
Итак, сегодня я немного разочаровался в попытке запустить kill в цикле, пока работает dd, и придумал этот метод для параллельного запуска их:
function vdd {
sudo dd "$@" &
sudo sh -c "while pkill -10 ^dd$; do sleep 5; done"
}
[d1 ] Теперь просто используйте vdd в любом месте, где вы обычно используете dd (он передает все аргументы напрямую), и вы получите отчет о проделанной работе каждые 5 секунд. Единственным недостатком является то, что команда не возвращается сразу после завершения dd; поэтому возможно, что эта команда заставит вас ждать дополнительных 5 секунд после возвращения dd, прежде чем он заметит и выйдет.
Как упоминалось выше, по крайней мере с «dd» от GNU coreutils или busybox, он будет реагировать на сигнал USR1, распечатывая информацию о ходе до stderr.
Я написал небольшой скрипт-оболочку для dd который показывает хороший индикатор процента, и пытается каким-либо образом не мешать процессу или способу работы dd. Вы можете найти его на github:
http://github.com/delt01/dd_printpcent
К сожалению, этот трюк SIGUSR1 работает только с GNU dd (из пакета coreutils) или режим «dd» busybox с указанной функцией включен во время компиляции. Он не работает с запасом «dd», включенным в большинство систем BSD, включая FreeBSD и OS X ...: (
Этот параметр заставляет dd указывать статистику каждые 2 секунды, которая по умолчанию используется для просмотра:
watch killall -USR1 dd
Чтобы менять каждые 2 секунды каждые 5 секунд, добавьте параметр -n 5 следующим образом:
watch -n 5 killall -USR1 dd