Мне нужно перечислить все файлы, чьи имена начинаются с "SomeLongString". Но случай "SomeLongString" может отличаться. Как?
Я использую zsh, но также приветствуется решение bash.
Ответ 1
ЗШ:
$ unsetopt CASE_GLOB
Или, если вы не хотите включать нечувствительное к регистру всплывающее меню вообще, вы можете активировать его только для меняющейся части:
$ print -l (#i)(somelongstring)*
Это будет соответствовать любому файлу, начинающемуся с "somelongstring" (в любой комбинации нижнего/верхнего регистра). Флаг, не учитывающий регистр, применяется ко всему между круглыми скобками и может использоваться несколько раз. Прочтите руководство zshexpn(1) для получения дополнительной информации.
UPDATE
Почти забыл, что вам нужно включить расширенное globbing для этого:
setopt extendedglob
Ответ 2
bash:
shopt -s nocaseglob
Ответ 3
В зависимости от того, насколько глубоко вы хотите иметь этот список, find предлагает довольно много
в этой связи:
find . -iname 'SomeLongString*' -maxdepth 1
Это даст вам только файлы в текущем каталоге. Важно здесь
параметр -iname вместо -name.
Ответ 4
$ function i () {
> shopt -s nocaseglob; $*; shopt -u nocaseglob
> }
$ ls *jtweet*
ls: cannot access *jtweet*: No such file or directory
$ i ls *jtweet*
JTweet.pm JTweet.pm~ JTweet2.pm JTweet2.pm~