Analiza lsnigdy nie jest wspaniałym pomysłem, ale to, co próbowałeś, zadziałałoby, gdybyś użył zakotwiczenia ^do oznaczenia początku meczu. ls -la | grep '^\.'
devnull
3
Nie, nie będzie, nazwa pliku nie jest początkiem linii z flagą -l. ls -la | awk '$9 ~ /^\./'będzie.
Jeśli chcesz przeanalizować lsdane wyjściowe, musisz dodać ^na początku wyrażenia regularnego i nie używać -lopcji. Użycie -lpowoduje, że każde wyjście wiersza rozpoczyna się od informacji o uprawnieniach do pliku lub folderu, a nie do nazwy pliku lub folderu. Więc powinieneś użyć w ten sposób:
Spowoduje to wyświetlenie listy wszystkich plików, których nazwa zaczyna się od kropki i które nie są .ani ...
Zauważ, że jeśli chcesz przesłać dane wyjściowe lsdo grep(co, jak zauważył devnull , nigdy nie jest dobrym pomysłem), upewnij się, że używasz \lslub command lsponieważ jeśli lsjest aliasowane, aby pokazać ci kolorowe wyjście (jak na przykład w Debianie) , jego dane wyjściowe zawierają sekwencje specjalne ANSI, aby utworzyć kolorowe dane wyjściowe, które wyzwalają twój, grepjeśli jego wzór jest zakotwiczony na początku linii.
Można używać -A(zamiast -a), aby zignorować ., ...
OJFord
@ OJFord + -Aróżni się od -akatalogów, lsdo których zstępuje, ale oba są (jednakowo) ignorowane i bezużyteczne dla nazw określonych w wierszu poleceń -d. Również jeśli lsjest aliasowany, --color=auto to orurowanie jest w porządku; tylko --color=alwayslub --colorpowoduje problemy.
dave_thompson_085
0
Rozwiązanie val0x00ff jest naprawdę dobre, ale zapomina o ukrytych katalogach.
Jeśli chcesz ukryte pliki i ukryte katalogi , bez. i .. :
Twoja sugestia kończy się niepowodzeniem na VMware ESXi (nie zawiera plików i katalogów), a także poniekąd nie działa na Linuksie (z maxdepth> 1, wyświetla również listę plików w katalogu zaczynającym się na a.), Ale działa to zarówno na Linuksie, jak i ESXi: find . \( -type f -o -type d \) -name '\.*' -print; stosuj w maxdepthrazie potrzeby.
Jeroen Wiert Pluimers
0
Poniżej jeden jest bardzo kompaktowy i obsługuje wiele wariantów
1) Wyświetl ukryte pliki, katalogi i podkatalogi
find . | grep "^\./\."
2) Wyświetlaj tylko ukryte katalogi i podkatalogi
find . -type d | grep "^\./\."
3) Wyświetlaj ukryte pliki tylko w bieżących i podkatalogach
find . -type f | grep "^\./\."
4) Wyświetl ukryte pliki i katalogi w bieżącym folderze
find .-maxdepth 1-type f -name '\.*'-print
find .-maxdepth 1 \( -type f -o -type d \) -name '\.*'-print
Oczywiście możesz użyć różnych maxdepthwartości lub całkowicie je usunąć. Bardzo przydatne, jeśli chcesz przeglądać katalogi ( -type d) lub zwykłe pliki ( type f) lub oba te elementy i łączyć je z innymi funkcjami, takimi jak:
Widziałem poprzednią odpowiedź, nie jest to duplikat i zdecydowanie „ls -a” i „ls -Ad” nie mają tego samego znaczenia. „-a” oznacza listę wszystkich plików / katalogów rozpoczynającą się od „.” -A oznacza listę wszystkich oprócz „”. , „..” i zawartość katalogu.
ls
nigdy nie jest wspaniałym pomysłem, ale to, co próbowałeś, zadziałałoby, gdybyś użył zakotwiczenia^
do oznaczenia początku meczu.ls -la | grep '^\.'
ls -la | awk '$9 ~ /^\./'
będzie.Odpowiedzi:
ls -ld .*
zrobi co chcesz.źródło
Musi działać, jeśli chcesz wyświetlić każdy ukryty plik w hierarchii katalogów.
źródło
Jeśli chcesz przeanalizować
ls
dane wyjściowe, musisz dodać^
na początku wyrażenia regularnego i nie używać-l
opcji. Użycie-l
powoduje, że każde wyjście wiersza rozpoczyna się od informacji o uprawnieniach do pliku lub folderu, a nie do nazwy pliku lub folderu. Więc powinieneś użyć w ten sposób:Lub możesz zrobić z
printf
wbudowanym bash:Jeśli używasz
zsh
, możesz użyć:źródło
Oto dwa inne sposoby znajdowania tylko ukrytych plików.
lub
Użyj,
-maxdepth
aby określić, jak daleko chcesz szukać w drzewie katalogów.źródło
Poprawa odpowiedzi Flupa :
Spowoduje to wyświetlenie listy wszystkich plików, których nazwa zaczyna się od kropki i które nie są
.
ani..
.Zauważ, że jeśli chcesz przesłać dane wyjściowe
ls
dogrep
(co, jak zauważył devnull , nigdy nie jest dobrym pomysłem), upewnij się, że używasz\ls
lubcommand ls
ponieważ jeślils
jest aliasowane, aby pokazać ci kolorowe wyjście (jak na przykład w Debianie) , jego dane wyjściowe zawierają sekwencje specjalne ANSI, aby utworzyć kolorowe dane wyjściowe, które wyzwalają twój,grep
jeśli jego wzór jest zakotwiczony na początku linii.źródło
-A
(zamiast-a
), aby zignorować.
,..
.-A
różni się od-a
katalogów,ls
do których zstępuje, ale oba są (jednakowo) ignorowane i bezużyteczne dla nazw określonych w wierszu poleceń-d
. Również jeślils
jest aliasowany,--color=auto
to orurowanie jest w porządku; tylko--color=always
lub--color
powoduje problemy.Rozwiązanie val0x00ff jest naprawdę dobre, ale zapomina o ukrytych katalogach.
Jeśli chcesz ukryte pliki i ukryte katalogi , bez. i .. :
źródło
find . \( -type f -o -type d \) -name '\.*' -print
; stosuj wmaxdepth
razie potrzeby.Poniżej jeden jest bardzo kompaktowy i obsługuje wiele wariantów
1) Wyświetl ukryte pliki, katalogi i podkatalogi
find . | grep "^\./\."
2) Wyświetlaj tylko ukryte katalogi i podkatalogi
find . -type d | grep "^\./\."
3) Wyświetlaj ukryte pliki tylko w bieżących i podkatalogach
find . -type f | grep "^\./\."
4) Wyświetl ukryte pliki i katalogi w bieżącym folderze
find . -maxdepth 1 | grep "^\./\."
źródło
Możesz spróbować:
Oczywiście możesz użyć różnych
maxdepth
wartości lub całkowicie je usunąć. Bardzo przydatne, jeśli chcesz przeglądać katalogi (-type d
) lub zwykłe pliki (type f
) lub oba te elementy i łączyć je z innymi funkcjami, takimi jak:(np. czas ostatniej modyfikacji, na przykładzie @piroux - uzupełniony przez @ jeroen-wiert-pluimers )
źródło
Możesz spróbować :
^ oznacza, że jest to początek zawartości wyrażeniem regularnym
źródło