Вы не защищаете значение имен файлов, добавляя к ним кавычки в выводе find
. Цикл по-прежнему будет рассматривать 'a filename'
как две вещи для повторения. Как вы заметили, кавычки также будут частью строки.
Вместо этого запустите grep
изfind
:
find. -type f -exec grep 'hello' {} \;
Это будет выполняться grep
один раз для каждого найденного файла.
find. -type f -exec grep 'hello' {} +
Это будет выполнять grep
для максимально возможного количества файлов одновременно (и, таким образом, также выводить имена файлов для пакетов с более чем одним файлом, используйте параметр -h
с GNU grep
или совместимый, чтобы не напечатать имя файла ).
Все еще с GNUgrep
:
grep -D skip -r 'hello'.
Это запустит grep
рекурсивно в текущем каталоге, пропуская не -обычные файлы (, как -type f
для find
), но по-прежнему просматривает символические ссылки на обычные файлы (, как если бы использовалось ГНУ find -xtype f
).