GNU/Linux >> Znalost Linux >  >> Linux

Jak se regulární výrazy liší od zástupných znaků používaných k filtrování souborů?

Zatímco my používáme * k označení nula nebo více předchozích znaků v grep , používáme *.c najít všechny soubory C, když je použijeme s ls příkaz jako ls *.c . Mohl by někdo říct, jak se používá * liší se v těchto dvou případech?

Přijatá odpověď:

Globing a regulární výrazy v názvech souborů shellu používají některé stejné znaky a mají podobné účely, ale máte pravdu, nejsou kompatibilní. Název souboru globbing je mnohem méně výkonný systém.

V názvu souboru globbing:

  • * znamená „nula nebo více znaků“

  • ? znamená „jakýkoli jednotlivý znak“

Ale v regulárních výrazech musíte použít .* znamená „nula nebo více znaků“ a . znamená „jakýkoli jednotlivý znak“. ? znamená něco zcela jiného v regulárních výrazech:nula nebo jedna instance předchozího prvku RE.

Hranaté závorky ([] ) se zdá, že fungují stejně v obou systémech v systému, na kterém to píšu, alespoň pro jednoduché případy. To zahrnuje věci jako třídy znaků POSIX (např. [:alpha:] ). To znamená, že pokud potřebujete, aby vaše příkazy fungovaly na mnoha různých typech systémů, nedoporučuji používat nic nad rámec základních věcí, jako jsou seznamy znaků (např. [abeq] ) a možná rozsahy znaků (např. [a-c] ).

Tyto rozdíly znamenají, že tyto dva systémy jsou přímo zaměnitelné pouze v jednoduchých případech. Pokud potřebujete shodu názvů souborů s regulárními výrazy, musíte to udělat jiným způsobem. find -regex je jedna možnost. (Všimněte si, že existuje také find -name , mimochodem, který používá syntaxi glob.)


Linux
  1. Jak stahovat soubory ze serveru SFTP pomocí skriptu python

  2. Jak používat Wget k rekurzivnímu stahování souborů z webového adresáře?

  3. Jak zobrazit seznam nedávno smazaných souborů z adresáře?

  1. Jak přesunout všechny soubory z aktuálního adresáře do horního adresáře?

  2. Jak zabránit procesu v zápisu souborů

  3. Jak odstranit neplatné znaky z názvů souborů?

  1. Jak používat Awk a regulární výrazy k filtrování textu nebo řetězců v souborech

  2. Jak zobrazit seznam souborů nainstalovaných z RPM nebo DEB balíčku v Linuxu

  3. Jak vytvořit video ze souborů PDF v Linuxu