Portál AbcLinuxu, 15. prosince 2025 19:13
ls /home/http/ | while read DIR;echo $DIR; V nápovědě jsem prd našel :(
Řešení dotazu:
find . -maxdepth 1 -type d?
man ls, ls --help nebo info coreutils 'ls invocation'?
find . -maxdepth 1 -type d \! -name .
Prezradíš nám dôvod, prečo musíš použiť ls, a nie find? Určite to zaujíma nielen mňa.
Použiť ls možné je, každopádne to je v porovnaní s find dosť hlúpe riešenie:
for I in `ls -A`; do if [ -d $I ]; then echo $I; fi; done
Samozrejme, možností je oveľa viac, krkolomnosti sa medze nekladú 
ls -l | awk '/^d/{print $9}'
$8
ls (GNU coreutils) 8.5 i ve FreeBSD v 1.66 2002/09/21 verzi mám název v 9. sloupci.
Zaujímavý detail. Funguje mi to podľa nastavených locales, ak použijem xx_XX, je to ako píšeš 9. stĺpec, pri xx_XX.UTF-8 je to stĺpec 8. Každopádne toto fungovanie môže byť zdrojom prúseru.
Rovnako sa mi to deje na Ubuntu, CentOS, SuSE. Solaris funguje vždy rovnako a berie stĺpec 9.
LANG=POSIX ls -la je to v 9. sloupci vždy. Ale stejně to není správná cesta. Co když název souboru bude obsahovat mezeru nebo LF? Na podobné vylomeniny se používá find.
ls -F /home/http/|egrep "/$"
'ls -d */'
nevyhovuje?
ls -d */ .*/ nebo ls -d */ .*/ | sed 1,2d
ls -d */, dle mého soudu tam je ls potřeba aby se to expandovalo, takže to za řešení pomocí ls považuji také. Stejně tak, jako echo */ bych považoval za řešení echem.
ls >/dev/nullaby tam bylo ls...
find, takže bohužel... :)
for x in ..., jak naznačuje dotaz, tak tam je to ls úplně stejně zbytečné jako v řešení s find.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.