Jedną z moich powszechnych praktyk jest wykonywanie greps na wszystkich plikach określonego typu, np. Znajdowanie wszystkich plików HTML zawierających słowo „rumpus”. Aby to zrobić, używam
find /path/to -name "*.html" | xargs grep -l "rumpus"
Czasami findzwraca plik ze spacją w nazwie, np my new file.html. Po xargsprzekazaniu tego grepotrzymuję jednak następujące błędy:
grep: /path/to/bad/file/my: No such file or directory
grep: new: No such file or directory
grep: file.html: No such file or directory
Widzę, co się tutaj dzieje: albo potok albo xargstraktuje spacje jako separatory między plikami. Jednak przez całe życie nie mogę wymyślić, jak temu zapobiec. Czy można to zrobić za pomocą find+ xargs? Czy też muszę użyć zupełnie innego polecenia?