GNU/Linux >> Znalost Linux >  >> Linux

Zobrazuje `ls -d *[!e]*` všechny soubory místo vynechání všech souborů, které obsahují E?

ls -d *e* vytiskne všechny soubory, které někde obsahují „e“. Ale opak, ls -d *[!e]* Zdá se, že nefunguje. Proč přesně to je?

je to proto, že ls trvá * jako svůj vlastní argument a rozšíří všechny soubory?

Chápu, že mohu udělat:ls -d !(*e*) (v Bash s extglob set nebo v ksh).

Přijatá odpověď:

To, co ten glob ve skutečnosti dělá, je, že odpovídá libovolnému počtu znaků, pak jedinému znaku jinému než e a potom libovolnému počtu znaků. Bude odpovídat libovolnému souboru s názvem, který se neskládá výhradně z e.


Linux
  1. Proč překladový soubor Bash neobsahuje všechny chybové texty?

  2. Jak najít všechny soubory, které neobsahují textový řetězec?

  3. Jak úplně odinstalovat balíček (včetně všech dalších souborů, které s ním byly dodány) pomocí yum (nebo rpm)?

  1. Jak najdu všechny soubory, do kterých *nemožno* skupinově zapisovat?

  2. grep najít soubory, které obsahují řetězec delší než x znaků?

  3. Jak najít soubory, které neobsahují daný vyhledávací řetězec

  1. Získání všech souborů, které byly upraveny ke konkrétnímu datu?

  2. Jak zobrazím názvy souborů, které obsahují dva znaky a jeden z nich je c?

  3. Odstraňte soubory, které začínají na, ale neobsahují