GNU/Linux >> Znalost Linux >  >> Linux

Rekurzivní globus?

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
  1. Rekurzivní Grep vs Find / -type F -exec Grep {}; Co je efektivnější/rychlejší?

  2. Rekurzivní umount po připojení Rbind?

  3. Expanze proměnné Shell a účinek globusu a rozdělení na něj?

  1. Otestovat rekurzivní vyhledávání a výměnu Sed před spuštěním?

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

  3. Ignorujte malá a velká písmena v glob() na Linuxu

  1. Spouštění pro příkazy terminálu smyčky v Jupyteru

  2. rekurzivní grep:vyloučení konkrétních adresářů

  3. Jak mohu provést rekurzivní chmod pouze v adresářích?