sudo find / -name "*" | xargs grep -sn --color=auto "-j"
Вышеприведенная команда возвращает ниже:
grep: invalid option -- 'j'
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
...
Как мне найти строку -j
?
В Вашем случае "-j"
интерпретируется grep
как аргумент/опция, не как шаблон поиска, даже если Вы заключили его в кавычки. Для добираний быть шаблоном, для того, что Вы хотите искать, просто используйте -e
опция:
sudo find / -name "*" | xargs grep -sn --color=auto -e "-j"
или даже:
sudo find / -name "*" | xargs grep -sn --color=auto -e -j
-e
аргумент/опция означает, что следующим аргументом является шаблон. Это от man grep
:
-e PATTERN, --regexp=PATTERN
Use PATTERN as the pattern. This can be used to specify
multiple search patterns, or to protect a pattern beginning with
a hyphen (-). (-e is specified by POSIX.)
Другие пути:
использовать --
, поскольку @Rinzwind сказал в его ответе, для создания grep
к hnow, что законченные опции.
использовать \
выйти из дефиса (-
):
sudo find / -name "*" | xargs grep -sn --color=auto "\-j"
Скажите это что опции, законченные --
:
sudo find / -name "*" | xargs grep -sn --color=auto -- "-j"
Результат:
Binary file /initrd.img matches
Binary file /lib/modules/2.6.24-16-server/ubuntu/media/gspcav1/gspca.ko matches
Binary file /lib/modules/2.6.24-16-server/ubuntu/sound/alsa-driver/isa/es1688/snd-es1688.ko matches
Binary file /lib/modules/2.6.24-16-server/ubuntu/sound/alsa-driver/pci/ice1712/snd-ice1712.ko matches
/lib/modules/2.6.24-16-server/modules.dep:1807:/lib/modules/2.6.24-16-server/kernel/fs/nls/nls_euc-jp.ko:
Binary file /lib/modules/2.6.24-16-server/kernel/crypto/blowfish.ko matches
Binary file /lib/modules/2.6.24-16-server/kernel/fs/nls/nls_euc-jp.ko matches
Binary file /lib/modules/2.6.24-16-server/kernel/fs/nls/nls_cp936.ko matches
Можно выйти -
символ с помощью \
$ sudo find / -name "*" | xargs grep -sn --color=auto "\-j"
, Также можно хотеть исключить папки и искать только файлы, добавить -type f
к find
:
$ sudo find / -name "*" -type f | xargs grep -sn --color=auto "\-j"
Также, если Вы добавляете -P 4
к xargs
, это будет параллельно всему выполнению на 4 процессах, и поиск может быть сделан быстрее, если у Вас есть больше чем 1 ядро.
$ sudo find / -name "*" -type f | xargs -P 4 grep -sn --color=auto "\-j"