Chtěl bych napsat něco takového:
$ ls **.py
abyste získali všechny názvy souborů .py, rekurzivně prochází hierarchií adresářů.
I když existují soubory .py k nalezení, shell (bash) poskytne tento výstup:
ls: cannot access **.py: No such file or directory
Nějaký způsob, jak udělat, co chci?
UPRAVIT: Rád bych upřesnil, že mě nezajímá konkrétní případ ls
, ale otázka se týká syntaxe glob.
Přijatá odpověď:
Abyste mohli dělat rekurzivní globy v bash, potřebujete globstar
funkce z bash verze 4 nebo vyšší.
Z manuálové stránky bash:
globstar
If set, the pattern ** used in a pathname expansion context will
match all files and zero or more directories and subdirectories.
If the pattern is followed by a /, only directories and
subdirectories match.
Příklad vzoru:
shopt -s globstar
ls -d -- **/*.py
Linux – Jak nakonfigurovat spravedlivé sdílení šířky pásma mezi Cgroups?
Jak spustit skript v prostředí Shell, když je stisknuta klávesová zkratka?