Почему бы просто не использовать функции System.IO.Path
?
Также есть:
find directory_name -type f -print0 | xargs -0 grep -li word
, но это может быть немного для новичка.
find
- это каталог-обходчик общего назначения, -type f
означает «искать простые файлы, а не каталоги и именованные каналы и что у вас есть», -print0
означает «выводить их на стандартный вывод, используя нулевые символы в качестве разделителей ". Выходные данные из find
отправляются в xargs -0
, и этот стандартный ввод захватывается кусками (чтобы избежать ограничений длины командной строки), используя нулевые символы в качестве разделителя записей (а не стандартный перевод строки), и применяется grep -li word
к каждому набор файлов. В grep
, -l
означает «список файлов, которые соответствуют», а -i
означает «без учета регистра»; обычно вы можете комбинировать опции одного символа, чтобы вы видели -li
чаще, чем -l -i
.
Если вы не используете -print0
и -0
, то у вас возникнут проблемы с именами файлов, которые содержат пробелы, поэтому их использование - хорошая привычка.