wyświetlaj tylko pliki zaczynające się od. (ukryty)


11

Próbowałem wyświetlić tylko ukryte pliki, ale nie wiem, jak to zrobić.

To działa (ale dopasowuje także kropki w innych miejscach)

ls -la | grep '\.'

Próbowałem dodać, ^ale nie znalazłem rozwiązania.


1
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.
yoonix

Odpowiedzi:



5
find . -type f -name '\.*' -print 

Musi działać, jeśli chcesz wyświetlić każdy ukryty plik w hierarchii katalogów.


2

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:

ls -Ad | grep '^\.'

Lub możesz zrobić z printfwbudowanym bash:

printf "%s\n" .*

Jeśli używasz zsh, możesz użyć:

print -l .*

1

Oto dwa inne sposoby znajdowania tylko ukrytych plików.

find . -maxdepth 1 -name ".*" -type f -ls

lub

find . -maxdepth 1 -name ".*" -type f -printf "%P \n"

Użyj, -maxdepthaby określić, jak daleko chcesz szukać w drzewie katalogów.


1

Poprawa odpowiedzi Flupa :

ls -lad .[!.]* ..?*

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.


1
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 .. :

find -maxdepth 1 -regex '\./\..+' -printf "%P\n"

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 | grep "^\./\."


0

Możesz spróbować:

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:

(np. czas ostatniej modyfikacji, na przykładzie @piroux - uzupełniony przez @ jeroen-wiert-pluimers )

find . -maxdepth 1 \( -type f -o -type d \) -name '\.*' -exec stat -c %y {} \; -printf "%P\t"

-1

Możesz spróbować :

ls -a |grep -E  "^\."

^ oznacza, że ​​jest to początek zawartości wyrażeniem regularnym


1
Duplikat innej odpowiedzi sprzed 3 lat ...
Jeff Schaller

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.
Lingjing France,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.