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.
ls -la | awk '$9 ~ /^\./'będzie.
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.
ls -la | awk '$9 ~ /^\./'będzie.
Odpowiedzi:
find . -type f -name '\.*' -print
Musi działać, jeśli chcesz wyświetlić każdy ukryty plik w hierarchii katalogów.
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 .*
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.
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.
-A(zamiast -a), aby zignorować ., ...
-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.
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"
find . \( -type f -o -type d \) -name '\.*' -print; stosuj w maxdepthrazie 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 "^\./\."
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"
Możesz spróbować :
ls -a |grep -E "^\."
^ oznacza, że jest to początek zawartości wyrażeniem regularnym
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 '^\.'