Jestem początkującym Linuksem. Muszę wyszukać ciąg „teststring” we wszystkich plikach * .java znajdujących się w katalogu / home / user1 / (łącznie z podfolderami). Jak mogę to zrobić w systemie Linux za pomocą polecenia powłoki.
Jestem początkującym Linuksem. Muszę wyszukać ciąg „teststring” we wszystkich plikach * .java znajdujących się w katalogu / home / user1 / (łącznie z podfolderami). Jak mogę to zrobić w systemie Linux za pomocą polecenia powłoki.
Odpowiedzi:
Najprostszym sposobem jest użycie funkcji GNU grep:
grep -r --include '*.java' teststring /home/user1
Jeśli kiedykolwiek korzystasz z innego wariantu unixa, który nie ma GNU grep, oto przenośny sposób:
find /home/user1 -name '*.java' -exec grep teststring {} +
grep -r teststring .
używając ack wystarczy wpisać:cd /home/user01 && ack --java teststring
ack --java teststring /home/user01
Znaleziono to. Publikowanie, ponieważ może komuś pomóc.
find /home/user01 -name *.java | xargs grep "teststring"
Popraw, jeśli istnieje lepszy sposób.
-print0
i -0
podczas przesyłania find
do, xargs
aby poprawnie pracować z plikami, które mogą mieć spacje lub znaki nowej linii w nazwach:find /home/user01 -name *.java -print0 | xargs -0 grep "teststring"