Это также показывает, что вам не нужно экранировать специальные символы оболочки при использовании кавычек.
редактировать
Так как -orимеет более низкий приоритет, чем подразумеваемое значение -andмежду -typeпервой и первой -nameчастью имени в скобках, как это было предложено Крисом.
Это также напечатает каталоги с именем "* .css".
Teddy 14 лет назад
0
Хм, скобки в вашей обновленной версии немного неуместны. Отдельные скобки должны заканчиваться как отдельные параметры для * find *, поэтому им нужны пробелы вокруг них (`" * .css "\)` приводит к единственному строковому значению; это то же самое, что (например) `'* .css)'`). Во-вторых, круглые скобки должны обходить целые «основные цвета» (открытые скобки должны быть перед `-name`, а не между ним и его" операндом ").
Chris Johnsen 14 лет назад
0
14
Dennis Williamson
Вот один из способов сделать вашу первую версию:
find -type f -regex ".*/.*\.\(shtml\|css\)"
8
Teddy
Вам нужно заключить в скобки, чтобы включить только файлы:
Я часто в конечном итоге использую egrep, или более длинные каналы, или perl для еще более сложных фильтров:
find . -type f | egrep '\.(shtml|css)$' find . -type f | perl -lne '/\.shtml|\.css|page\d+\.html$/ and print'
Это может быть несколько менее эффективно, но это обычно не проблема, а для более сложных вещей, как правило, легче создавать и модифицировать.
Стандартное предостережение относится к тому, чтобы не использовать это для файлов со странными именами файлов (например, содержащих переводы строки).
+1 за чистое и модульное решение, узкие места производительности обычно возникают при обработке файлов, полученных в результате поиска.
Cristik 6 лет назад
0