Portál AbcLinuxu, 4. května 2024 08:43


Dotaz: Jak na ls

19.6.2012 15:56 Marky
Jak na ls
Přečteno: 796×
Odpovědět | Admin
Zdravím, jak můžu vypsat jen adresáře, aby se nevypisovaly ani 'soubory' ani '.' ani '..'

Zkouším to takto, ale nemůžu najít ten správny přepinač :(
ls /home/http/ | while read DIR;
echo $DIR;

V nápovědě jsem prd našel :(

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.6.2012 15:58 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: Jak na ls
Odpovědět | | Sbalit | Link | Blokovat | Admin
Třeba
find . -maxdepth 1 -type d
?
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
19.6.2012 16:01 Marky
Rozbalit Rozbalit vše Re: Jak na ls
A pomocí ls to nejde?
19.6.2012 16:10 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak na ls
To je tak těžké přečíst si man ls, ls --help nebo info coreutils 'ls invocation'?
19.6.2012 16:25 Marky
Rozbalit Rozbalit vše Re: Jak na ls
V manuálu nic není, pokud nemyslíš přepinač -d, který je mi k ničemu, jelikož potřebuji načíst pouze poslední adresářw, ne celé cesty..
19.6.2012 16:41 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak na ls
Když v manuálu nic není, tak to asi nejde, ne? Nebo myslíte, že mají diskutující k dispozici ještě nějaký jiný manuál, kde jsou popsané další tajné parametry?
19.6.2012 16:19 l4m4
Rozbalit Rozbalit vše Re: Jak na ls
Nejde. Spokojen?
19.6.2012 16:03 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: Jak na ls
jo a pokud tam nemá být ani adresář ".", tak je to
find . -maxdepth 1 -type d \! -name .
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
Balu avatar 19.6.2012 16:44 Balu | skóre: 25 | blog: Ja a Linux | Praha
Rozbalit Rozbalit vše Re: Jak na ls
Odpovědět | | Sbalit | Link | Blokovat | Admin

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ú :-)

Počítač bez Windows je ako kakao bez kečupu.
19.6.2012 16:47 kt
Rozbalit Rozbalit vše Re: Jak na ls
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co něco takového?
ls -l | awk '/^d/{print $9}'
19.6.2012 16:50 kt
Rozbalit Rozbalit vše Re: Jak na ls
Vlastně by to bylo potřeba trochu upravit, kvůli adresářům s mezerami v názvu.
Balu avatar 19.6.2012 16:51 Balu | skóre: 25 | blog: Ja a Linux | Praha
Rozbalit Rozbalit vše Re: Jak na ls
$8
Počítač bez Windows je ako kakao bez kečupu.
19.6.2012 17:05 kt
Rozbalit Rozbalit vše Re: Jak na ls
Záleží na verzi, ale v ls (GNU coreutils) 8.5 i ve FreeBSD v 1.66 2002/09/21 verzi mám název v 9. sloupci.
Balu avatar 20.6.2012 09:50 Balu | skóre: 25 | blog: Ja a Linux | Praha
Rozbalit Rozbalit vše Re: Jak na ls

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.

Počítač bez Windows je ako kakao bez kečupu.
20.6.2012 10:06 Kit
Rozbalit Rozbalit vše Re: Jak na ls
Stačí ls spustit takto:
LANG=POSIX ls -l
a 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.
Balu avatar 20.6.2012 10:36 Balu | skóre: 25 | blog: Ja a Linux | Praha
Rozbalit Rozbalit vše Re: Jak na ls
Súhlasím. Dá sa to síce ošetriť nejakými šialenstvami, ale find je na to ideálny.
Počítač bez Windows je ako kakao bez kečupu.
wamba avatar 19.6.2012 17:25 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Jak na ls
Odpovědět | | Sbalit | Link | Blokovat | Admin
ls -F /home/http/|egrep "/$"
This would have been so hard to fix when you don't know that there is in fact an easy fix.
Řešení 1× (Ragzid)
19.6.2012 18:02 hajoucha | skóre: 22
Rozbalit Rozbalit vše Re: Jak na ls
Odpovědět | | Sbalit | Link | Blokovat | Admin
'ls -d */'

nevyhovuje?
19.6.2012 21:18 l4m4
Rozbalit Rozbalit vše Re: Jak na ls
Nevypisuje to opravdu všechny adresáře, pouze ty, co nezačínají tečkou. Vypisuje to i symlinky na adresáře (ale to lze považovat za fíčuru).
20.6.2012 06:46 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Jak na ls
Nevypisuje to opravdu všechny adresáře, pouze ty, co nezačínají tečkou.
ls -d */ .*/
nebo 
ls -d */ .*/ | sed 1,2d
20.6.2012 11:30 l4m4
Rozbalit Rozbalit vše Re: Jak na ls
Doufám, že si uvědomuješ, že ls se spouští jen tak pro parádu, protože ten seznam expanduje už shell. Takže řešení pomocí ls to zrovna není ;)
20.6.2012 12:02 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Jak na ls
Dobrá připomínka, nicméně to ls je potřeba aby byly . a .. nahoře a na zvláštních řádcích a šly odříznout sedem.

Polemizovat by se dalo o tom hajouchovo odhlasovaném "řešení" 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.
20.6.2012 12:08 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Jak na ls
Teď jsem se podíval na dotaz a v kontextu tohoto vlákna není zřejmé, zda hajouch reagoval přímo na dotaz, nebo na dodatečnou otázku v prvním vlákně "a pomocí ls to nejde".
20.6.2012 12:16 hajoucha | skóre: 22
Rozbalit Rozbalit vše Re: Jak na ls
no, já jsem spíš jenom nadhodil, co by tak tazatel mohl chtít, popř. co by se jiným mohlo hodit. Vůbec si nedělám ambice na nějaká "řešení" nebo tak. Sám jsem se na tomto případu ledasco přiučil :) Tj. klidně v akademické diskusi o tom, co ls umí nebo neumí pokračujte.
20.6.2012 16:59 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Jak na ls
Hehe, to "řešení" jsem napsal do uvozovak jako zdůraznění, ne jako že bych to za řešení snad nepovažoval :) Osobně to za !řešení! pomocí ls považuji, protože to řeší problém a je tam ls.
20.6.2012 17:05 l4m4
Rozbalit Rozbalit vše Re: Jak na ls
V tom případě je nejlepší řešení použít find a potom spusit
ls >/dev/null
aby tam bylo ls...
Balu avatar 20.6.2012 17:56 Balu | skóre: 25 | blog: Ja a Linux | Praha
Rozbalit Rozbalit vše Re: Jak na ls
Páni, ako som vyššie napísal, komplikáciám sa medze nekladú, hlavne ak je nutné použiť nevhodný príkaz.
Počítač bez Windows je ako kakao bez kečupu.
20.6.2012 23:19 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Jak na ls
To bych označil za řešení pomocí find, takže bohužel... :)
20.6.2012 23:33 l4m4
Rozbalit Rozbalit vše Re: Jak na ls
Já bych zase to řešení s ls, kde to expanduje shell, označil za řešení pomocí shellu. Pokud totiž tazatel chce dělat nějaké for x in ..., jak naznačuje dotaz, tak tam je to ls úplně stejně zbytečné jako v řešení s find.
21.6.2012 10:25 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Jak na ls
Leda že byste chtěl třeba v budoucnu ten filtr trochu složitější, ale uznávám že to je spekulace :)
19.6.2012 22:27 dave
Rozbalit Rozbalit vše Re: Jak na ls
Odpovědět | | Sbalit | Link | Blokovat | Admin
ls bez prepínače a bez cesty ti vypíše adresáře v home
20.6.2012 00:22 l4m4
Rozbalit Rozbalit vše Re: Jak na ls
Čím to asi bude, že mně vždycky vypisuje nikoli home, ale obsah aktuálního adresáře, a to jak adresáře, tak soubory?
tsLnox avatar 24.6.2012 18:15 tsLnox | skóre: 31 | blog: Blog jednoho ukecaného Gentoolemana | Žďár nad Sázavou
Rozbalit Rozbalit vše Re: Jak na ls
A nemá to Dave v aliasu? :-D

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.