Если это - HttpRequest. QueryString тогда можно скопировать набор в перезаписываемый набор и иметь путь с ним.
NameValueCollection filtered = new NameValueCollection(request.QueryString);
filtered.Remove("Language");
Почему бы и нет:
ls *.{mp3,exe,mp4}
Я не уверен, где я это узнал, но я использовал это.
egrep
- расширенный grep - здесь поможет
ls | egrep '\.mp4$|\.mp3$|\.exe$'
.
Самый простой способ - просто использовать ls
ls *.mp4 *.mp3 *.exe
На всякий случай: почему бы вам не использовать find
?
find -iname '*.mp3' -o -iname '*.exe' -o -iname '*.mp4'
Если вы все еще ищете альтернативное решение:
ls | grep -i -e '\\.tcl$' -e '\\.exe$' -e '\\.mp4$'
Не стесняйтесь добавлять дополнительные флаги -e, если необходимо.
Нет необходимости в grep. Подстановочные знаки оболочки сделают свое дело.
ls *.mp4 *.mp3 *.exe
Если вы запустили
shopt -s nullglob
, то несоответствующие глобусы будут полностью удалены и не останутся в командной строке нераспределенными.
Если вы хотите подстановку без учета регистра (поэтому * .mp3 будет match foo.MP3):
shopt -s nocaseglob
Используйте регулярные выражения с find
:
find . -iregex '.*\.\(mp3\|mp4\|exe\)' -printf '%f\n'
Если вы передаете имена файлов по конвейеру:
find . -iregex '.*\.\(mp3\|mp4\|exe\)' -printf '%f\0' | xargs -0 dosomething
Это защищает имена файлов, содержащие пробелы или символы новой строки.
ОС X find
поддерживает чередование только при использовании параметра -E
(расширенный).
find -E . -regex '.*\.(mp3|mp4|exe)'