2016-12-26 16 views
0

Я новичок в сценариях оболочки. Я пытаюсь перебрать список путей файла из find и подсчитать количество строк для каждого файла в списке. Некоторые из путей к файлу содержат пробелы, поэтому они интерпретируются как отдельные элементы в цикле for вместо одного элемента.Экранирование пробелов для списка путей файла

Когда я запускаю следующее:

for filepath in `find . -name '*.m'`; do echo $filepath; done; 

Я вижу, что некоторые из путей с пробелами печатаются на несколько строк, вместо того, чтобы быть на той же строке.

Как избежать пробелов для каждого пути к файлу?

+0

См. [BashFAQ # 20: Как найти и безопасно обрабатывать имена файлов, содержащие символы новой строки, пробелы или оба?) (Http://mywiki.wooledge.org/BashFAQ/020). –

ответ

1

Я пытаюсь просмотреть список путей файла из поиска и подсчитать количество строк для каждого файла в списке.

Ниже приводится правильный способ сделать это:

find . -type f -name '*.md' -exec wc -l {} \; 

Цикл for .. in принимает список IFS -разделенное слов. IFS содержит пространство по умолчанию, поэтому пробелы внутри имен файлов фактически разделяют имена файлов на отдельные слова.

+0

Каким образом можно использовать 'wc', если результат' find' - это каталоги? – Buck

 Смежные вопросы

  • Нет связанных вопросов^_^