Еще более интересный, чем то, на что отвечают @Rush, является способностью перезапустить (и намного больше) систему, даже если система не отвечает на клавиатуру вообще. Но это должно быть, отвечают на ping (ICMP) пакеты.
Посмотрите здесь для полной документации и инструкций относительно того, как реализовать это.
Сначала генерируйте индексы для mainFile,
sed 's/ /\n/g' mainFile | sort | uniq > mainFile.idx
Затем сделайте grep для фиксированных строк:
grep -F -f mainFile.idx file*
Если Ваш grep
поддерживает нестандартное -w
опция (для соответствующих слов):
grep -lwFe "$(tr -cs "[[:alnum:]_'-]" '[\n*]' < mainfile | sort -u)" file*
используйте этот код:
for pattern in `cat mainfile`
do
grep -l "$pattern" file*
done
ARUN
sed 's/:.*//' | sed 's/.*\///'
; действительно ли это - хороший способ сделать это? Я, могло казаться, не нашел переключатель, который просто произведет основное имя файла. – stariz77 04.11.2012, 13:02basename /path/to/file
– daisy 04.11.2012, 13:38/path/to/file/file1:tawdry malicious
, т.е. путь и список слов найдены. Я просто хочу имя файла (базовое имя) и никакой список найденных слов. Я думал, возможно, был путь к указать этот вывод с Вашим решением или чем-то. – stariz77 04.11.2012, 13:45awk -F ':' { print $1 }
– daisy 05.11.2012, 06:19-l
опция кgrep
. Кроме того, это не собирается распознавать слова. Таким образом, если, например, mainfile будет содержать "один", то он будет соответствовать всем файлам, которые содержат "уведенный", "мед"... Посмотрите "-w" опцию для этого. Также отметьте это\n
в RHS sed'ss
команда не является стандартной (можно использоватьtr
вместо этого). Также обратите внимание, что Вам не нужен временный файл, можно использовать-f <(...)
или передайте список слов на командной строке. – Stéphane Chazelas 05.11.2012, 12:57