Мне нужно использовать средство grep на всем сервере.
Я попробовал следующее:
grep -r 'MyString' /
grep -r 'MyString' /*
Тем не менее, ни один из них, кажется, не работает. Какие-либо предложения?
sudo find / -type f -exec grep "Strring" {} \;
Вы уверены, что хотите сделать это, хотя? Это будет проходить по всем файловым системам (локальным или нет) и вполне может максимально использовать процессор на вашем сервере.
sudo find / -type f -print0 |xargs -0 grep -l 'MyString'
cd /
find . | xargs grep MyString
Если вы ищете файлы определенного типа:
find . -name *.java | xargs grep Integer
Я второй не подход.
Но если у вас нет прав root, вы получите целую кучу сообщений об отказе в разрешении, перенаправьте их в /dev /null. Тогда вы получите то, что хотите обратно.
find . / 2>/dev/null | xargs grep MyString 2>/dev/null
cd /
grep -R 'your string' *
Установите ack, который упакован как ack-grep
в репозитории Ubuntu. Это похоже на комбинированную комбинацию find и grep, которая делает именно то, что вы хотите, не возиться с комбинациями команд.
$ sudo ack-grep -a 'MyString' /
Опция -a
используется для переопределения поведения ack по умолчанию, которое ограничивает поиск типами файлов, о которых он знает. Тем не менее, он по-прежнему исключает некоторые файлы и каталоги, такие как файлы резервных копий, оканчивающиеся на «~», или каталоги управления исходным кодом, например «.svn». Вы можете изменить это поведение, чтобы искать абсолютно все, используя опцию -u
.
Чтобы ограничить поиск определенными типами файлов:
$ sudo ack-grep -aG '.*txt' MyString
отмечая, что аргумент -G
является регулярным выражением, а не глобусом.
Или для типов файлов, о которых ack уже знает, таких как файлы C++:
$ ack-grep --cpp 'SomeFunctionName'