GNU/Linux >> Znalost Linux >  >> Linux

Přiřaďte všechny soubory ve všech vnořených adresářích pomocí shell globbing

Konkrétně o git (gitignore, gitattributes a příkazech, které přebírají názvy souborů):pokud vzor neobsahuje žádné lomítko, * zástupné znaky se budou shodovat hluboko. Pokud obsahuje lomítko, git zavolá fnmatch s FNM_PATHNAME vlajka a jednoduché zástupné znaky nebudou odpovídat lomítkům. ** hloubková shoda není podporována. Možná by tento druh hluboké shody mohl být více podporován novým FNM_STARSTAR flag a implementaci v glibc, gnulib a dalších místech.


Pokud chcete jednat se všemi soubory vrácenými funkcí find, a nikoli pouze vypisovat, můžete je převést na xargs:

find <directory> -type f | xargs ls

Ale to platí pouze pro příkazy, které nemají rekurzivní příznak.


V Bash 4 s shopt -s globstar , a zsh můžete použít **/* který bude zahrnovat vše kromě skrytých souborů. Můžete udělat shopt -s dotglob v Bash 4 nebo setopt dotglob v zsh způsobí zahrnutí skrytých souborů.

V ksh, set -o globstar umožňuje to. Nemyslím si, že existuje způsob, jak implicitně zahrnout soubory s tečkami, ale myslím, že **/{.[^.],}* funguje.


Linux
  1. Odebrat všechny soubory/adresáře kromě jednoho souboru?

  2. Smazat všechny soubory kromě určitého podadresáře pomocí funkce Najít?

  3. Jak nahradit jeden znak druhým ve všech názvech souborů aktuálních adresářů?

  1. Vytváření a odstraňování souborů a adresářů pod Linuxem

  2. Jak najít všechny soubory končící na .rb s Linuxem?

  3. Vypsat všechny soubory grafických obrázků s find?

  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Základy Linuxu:Jak stahovat soubory do prostředí pomocí Wget

  3. Jak najít soubor v Linuxu ve všech adresářích rekurzivně