GNU/Linux >> Znalost Linux >  >> Linux

Glob bez ohledu na velikost písmen na zsh/bash

ZSH:

$ unsetopt CASE_GLOB

Nebo, pokud nechcete povolit globování bez rozlišení velkých a malých písmen obecně, můžete jej aktivovat pouze pro různé části:

$ print -l (#i)(somelongstring)*

To bude odpovídat všem souborům, které začínají "somelongstring" (v jakékoli kombinaci malých a velkých písmen). Příznak bez rozlišení malých a velkých písmen platí pro vše v závorkách a lze jej použít vícekrát. Přečtěte si příručku zshexpn(1) pro více informací.

AKTUALIZACE Skoro jsem zapomněl, že aby to fungovalo, musíte povolit extendend globbing:

setopt extendedglob

V závislosti na tom, jak hluboko chcete mít tento zápis, find nabízí v tomto ohledu docela hodně:

find . -iname 'SomeLongString*' -maxdepth 1

Tím získáte pouze soubory v aktuálním adresáři. Důležité je zde -iname parametr namísto -name .


bash:

shopt -s nocaseglob


$ 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~

Linux
  1. Příkaz nebyl nalezen v Zsh, ale nalezen v Bash?

  2. Co přesně je <() v bash (a =() v zsh)?

  3. bash - shoda proměnné bez ohledu na velikost písmen

  1. Který terminál je lepší:Bash vs Zsh

  2. Jak dosáhnout toho, aby hvězdička „*“ v Zsh měla stejné chování jako Bash?

  3. Zkopírujte rozsah souborů v příkazovém řádku (ZSH/BASH)

  1. Rekurzivní globus?

  2. Historie Bash bez čísel řádků

  3. Jak nulovat číselné proměnné v zsh (a možná také bash?)