it-swarm-eu.dev

Zobrazit pouze skryté soubory (tečkové soubory) v ls alias

Používám příkaz

ls -a | grep '^\.'

pro zobrazení pouze skrytých souborů. Přidal jsem řádek

alias hidden='ls -a | grep '^\.'' # show only hidden files

na .bash_aliases soubor

ale to nefunguje. Pravděpodobně je to problém s ' znak.

Mohl byste mi prosím pomoci napsat správný alias?

46
xralf

Buď vytvoříte dvojici uvozovek dvojitými uvozovkami:

alias hidden='ls -a | grep "^\."'

Nebo udělejte z vnějších uvozovek dvojité uvozovky:

alias hidden="ls -a | grep '^\.'"

Nebo udělejte všechny uvozovky dvojité uvozovky a unikněte vnitřní dvojici:

alias hidden="ls -a | grep \"^\.\""

Nebo z něj udělejte funkci, takže při volání můžete předat některé argumenty:

hidden() { ls -a "[email protected]" | grep '^\.'; }
29
manatwork

Nechte Shell seznam tečkových souborů a řekněte ls, aby neviděl skrz adresáře:

ls -d .*
ls -Ad .* #This will list all the hidden files & directories while retaining the color & formatting

OR

Vytvoření stejného aliasu:

alias lh='ls -Ad .*'

OR

Totéž by se dalo udělat pomocí příkazu grep a obsluhy potrubí; ztratilo by to však barvu a formátování:

ls -a|grep "^\." 

OR

Přes alias:

alias lh='ls -a|grep "^\."'
10
Prince Bhanwra

Můžete použít dvojité uvozovky:

alias hidden="ls -a | grep '^\.'"

nebo zřetězit více jednotlivých citovaných řetězců

alias hidden='ls -a | grep '\''^\.'\'

nebo odebrat ze všech interních nabídek

alias hidden='ls -a | grep ^\\.'
4
enzotib

Zdá se, že to se mnou nefunguje, protože ls -a vytiskne dva (někdy i více sloupců). Doporučuji použít -1 možnost, aby se ujistil, že každý soubor je na svém vlastním řádku. Něco takového:

alias hidden='ls -a1 | grep "^\."'
2
rahmu

Dělat to trochu komplikovanější, ale vyhnout se analyzovat ls .

llsh () { find "${@:-.}/" -maxdepth 1 -type f -name ".*" -ls; }

lsh () { find "${@:-.}/" -maxdepth 1 -type f -name ".*" -print; }

Funkce Shell použije find ke generování seznamu všech skrytých normálních souborů v aktuálním adresáři nebo v adresáři zadaném na příkazovém řádku.

Funkce llsh vygeneruje "dlouhý výpis", který bude pouze o něco více podrobnější než ls -l, zatímco lsh generuje výpis v jednom sloupci jako ls -1.

1
Kusalananda
find . -type f -name ".*"

OR

find . -type f -name ".*" | while read file; do basename $file; done
0
kemiko

Podporuje vaše ls -A? Z man ls:

    -a, --all
          do not ignore entries starting with .

   -A, --almost-all
          do not list implied . and ..

$ ls --version
ls (GNU coreutils) 8.5
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  
Written by Richard M. Stallman and David MacKenzie.
0
waltinator
# add it to ~/.bashrc

    hidden() {  # lists hidden files and directories
        find . -maxdepth 1 -name '.?*' -exec ls --color -d {} \;
        }

    hiddenfiles() { # lists hidden files
        find . -maxdepth 1 -type f -name '.?*' -exec ls --color -d {} \;
        }

    hiddendirs() { # lists directories
        find . -maxdepth 1 -type d -name '.?*' -exec ls --color -d {} \;
        }
0
Akhil Jalagam