Pokud jde o dokumentaci ls(1) (man ls
):
-A, --almost-all neuvádí implicitní . a ..
potřebujete (bez jakýkoli další argument, například .*
):
ls -A
nebo ještě lépe:
/bin/ls -A
Mám situaci, kdy chci odstranit řadu tečkových adresářů. Na mých serverech označujeme adresáře pro odstranění přidáním tečky a určitých dalších textových vzorů (časové razítko) pro automatické odstranění. Někdy to musím udělat ručně.
Jak jsem poznamenal k odpovědi Basilea Starynkevitche, když použijete kulový vzor, jako je ten pod přepínačem -A, ztratí svou funkci a funguje stejně jako -a:
[email protected]:~/scripts$ ls -1dA .*
.
..
.comparepp.sh.swp
Pokud se jako uživatel pokusím odstranit soubory, zcela jistě by došlo k chybě, ale nechci přemýšlet o tom, co by se mohlo stát jako root (!)
Můj přístup v tomto případě je:
for dir in $(ls -1ad .* | tail -n +3) ; do rm -rfv $dir ; done
Vymezuji první 2 řádek obsahující tečky, jak můžete vidět. Chcete-li přizpůsobit odpověď na položenou otázku, stačí:
ls -d1A .* | tail -n +3
$ ls -lA
nejlépe vyhovuje mým potřebám.
Pro usnadnění doporučuji definovat alias v souboru .bashrc následovně:
alias ll='ls -lA'