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ć 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:
ls -Ad | grep '^\.'
Lub możesz zrobić z printf
wbudowanym 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, -maxdepth
aby 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 ls
do grep
(co, jak zauważył devnull , nigdy nie jest dobrym pomysłem), upewnij się, że używasz \ls
lub command ls
ponieważ jeśli ls
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.
-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śli ls
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 .. :
find -maxdepth 1 -regex '\./\..+' -printf "%P\n"
find . \( -type f -o -type d \) -name '\.*' -print
; stosuj w maxdepth
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 "^\./\."
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 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 )
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
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 '^\.'