Как удалить сообщения об ошибках при поиске рекурсивно строку?

Без sed можно сделать замены как это в ударе:

for line in  $(< patterns) ; do  echo "Pattern: " $line " char: "  ${line/=>*/} " nr: " ${line/*=>/}; done 

('шаблоны' были бы файлом с => 1 и так далее), который приводит к:

for line in  $(< patterns) ; do
  c=${line/=>*/}
  n=${line/*=>/}
  mv $c.png $n.png 
done 

Страница справочника удара перечисляет это и другой, интересные опции под 'строковой заменой'.

Возможно, жемчуг rename интересная опция также. Это позволяет массовые переименования с шаблонами, как

rename 's/^a/1/' a*png 

На человечности это идет с perl-пакетом, afaik.

3
20.06.2012, 09:45
2 ответа

Перенаправьте стандартную погрешность к/dev/null. Т.е.

find -type f -print0 2>/dev/null | xargs -0 -n 10 grep -i searchstring 2>/dev/null
8
27.01.2020, 21:11
  • 1
    , для которого я установил псевдоним find -type f -print0 | xargs -0 -n 10 grep -i searchstring. Псевдоним: "mysearch". Я ищу его как это: mysearch searchstring. Как я установлю Вашу команду на псевдоним? потому что, в Вашей команде searchstring в команде, не в конце. –  alwbtc 20.06.2012, 12:54
  • 2
    Немного немой, но это добилось бы цели: find -type f -print0 2>/dev/null | xargs -0 -n 10 grep -i searchstring 2>/dev/null | grep -i searchstring –  janos 20.06.2012, 16:09

Если сообщения об ошибках прибывают из находки (например, потому что существует каталог, к которому Вы не можете пересечь, перенаправить его ошибки /dev/null.

find -type f -print0 2>/dev/null | …

Если сообщения об ошибках прибывают из grep (например, потому что некоторые файлы нечитабельны), перенаправьте его ошибки к /dev/null, или передача -s опция сказать этому игнорировать нечитабельные файлы.

xargs -0 grep -s -i searchstring /dev/null

Нет, никакой смысл в ограничении количества файлов не передал вместе grep. Но необходимо добавить /dev/null так, чтобы grep всегда видит по крайней мере два файла, иначе grep опускает имя файла в его выводе, если оно имеет только один аргумент файла. С GNU grep или Busybox (т.е. Linux или Cygwin), можно использовать -H опция вместо этого.

0
27.01.2020, 21:11

Теги

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