Без 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.
Перенаправьте стандартную погрешность к/dev/null. Т.е.
find -type f -print0 2>/dev/null | xargs -0 -n 10 grep -i searchstring 2>/dev/null
Если сообщения об ошибках прибывают из находки (например, потому что существует каталог, к которому Вы не можете пересечь, перенаправить его ошибки /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
опция вместо этого.
find -type f -print0 | xargs -0 -n 10 grep -i searchstring
. Псевдоним: "mysearch". Я ищу его как это:mysearch searchstring
. Как я установлю Вашу команду на псевдоним? потому что, в Вашей командеsearchstring
в команде, не в конце. – alwbtc 20.06.2012, 12:54find -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