it-swarm-eu.dev

LINUX Rekurzivně seznam všech souborů v adresáři včetně souborů v adresářích symlink

Předpokládejme, že mám adresář /dir uvnitř kterého jsou 3 symbolické odkazy na jiné adresáře /dir/dir11, /dir/dir12 a /dir/dir13. Chci uvést všechny soubory v dir včetně těch v dir11, dir12 a dir13.

Chcete-li být obecnější, chci vypsat všechny soubory včetně těch v adresářích, které jsou symbolickými odkazy. find ., ls -R, atd. se zastaví na symbolickém odkazu, aniž by se do nich přesunuli, aby se dále zobrazovali.

118
CuriousDawg

Možnost -Lls splní to, co chcete. Dereference symbolické odkazy.

Takže váš příkaz bude:

ls -LR

Toho můžete také dosáhnout

find -follow

Volba -follow směřuje k nalezení symbolických odkazů na adresáře.

Používání systému Mac OS X

find -L

jako -follow byl zamítnut.

187
Michael Ridley

Co takhle strom ? tree -l bude následovat symbolické odkazy.

Disclaimer: Tento balíček jsem napsal.

107
Steve Baker
find /dir -type f -follow -print

-type f znamená, že bude zobrazovat skutečné soubory (nikoli symbolické odkazy)

-follow znamená, že bude následovat vaše odkazy na adresáře

-print způsobí, že se zobrazí názvy souborů.

Pokud chcete zobrazit typ ls, můžete provést následující

find /dir -type f -follow -print|xargs ls -l
43
dvorak

Použití ls:

  ls -LR

od uživatele:

   -L, --dereference
          when showing file information for a symbolic link, show informa‐
          tion  for  the file the link references rather than for the link
          itself

Nebo pomocí funkce Najít:

find -L .

Z vyhledávací stránky:

-L     Follow symbolic links.

Pokud zjistíte, že chcete sledovat pouze několik symbolických odkazů (jako například ty, které jste zmínili), měli byste se podívat na volbu -H, která následuje pouze na symbolických odkazech, které jí předáte na příkazovém řádku.

8
pjz
find -L /var/www/ -type l

# man find
-L     Follow  symbolic links.  When find examines or prints information about files, the information used shall be taken from the

vlastnosti souboru, ke kterému odkaz odkazuje, nikoliv ze samotného odkazu (pokud se nejedná o zlomený symbolický odkaz nebo o nález není schopen prozkoumat soubor na který odkaz bodů). Použití této možnosti znamená -noleaf. Pokud později použijete volbu -P, bude -noleaf stále platný. Pokud je -L ve skutečnosti A nalezne symbolický odkaz na podadresář během hledání, podadresář označený symbolickým odkazem Bude vyhledán.

5
Ashwin Muni

Věděl jsem, že tree bylo vhodné, ale neměl jsem nainstalovaný strom. Takže mám docela blízký náhradník tady

find ./ | sed -e 's/[^-][^\/]*\//--/g;s/--/ |-/'
3
divinedragon
ls -R -L

-L dereferences symbolické odkazy. To také znemožní vidět všechny odkazy na soubory, i když - budou vypadat jako soubor s odkazem.

2
Branan

v případě, že chcete vytisknout všechny soubory obsah : find . -type f -exec cat {} +

0
ItsmeJulian