Z jakimi opcjami muszę korzystać, find
aby wykluczyć ukryte pliki?
.hidden/visible.txt
?
Z jakimi opcjami muszę korzystać, find
aby wykluczyć ukryte pliki?
.hidden/visible.txt
?
Odpowiedzi:
Znalazłem to tutaj :
find . \( ! -regex '.*/\..*' \) -type f -name "whatever"
\( ! -name '.*' \)
?
\( ! -path '*/.*' \)
by.
Wygląda na to, że globalny wzór negacji nie jest dobrze znany. Możesz więc użyć:
find . -name "[!.]*"
To nie odpowiada na twoje pytanie, ale dla zadania znajdowania nie ukrytych plików chcę pozwolić znaleźć wszystkie pliki, a następnie filtrować za pomocą grep.
find . -type f | grep -v '/\.'
Podobne do twojego podejścia, ale może nieco prostsze.
Napisałem skrypt o nazwie, findnh
który moim zdaniem lepiej radzi sobie z niektórymi przypadkami krawędziowymi niż odpowiedzi na to pytanie, które udało mi się znaleźć w Internecie.
#!/bin/bash
declare -a paths
while [ $# -ne 0 ]; do
case "$1" in -*) break ;; esac
paths+=("$1")
shift
done
find "${paths[@]}" \( -name . -o -name .. -o \! \( -name '.*' -prune \) \) "$@"
Na przykład, możesz znaleźć nie ukryte pliki i katalogi w wyraźnie określonym ukrytym katalogu za pomocą polecenia podobnego findnh ~/.hiddendir/
, które pokaże, ~/.hiddendir/file
ale nie ~/.hiddendir/.superhiddenfile
.
findnh ~/.hiddendir/
, nic nie dostaję. Poza tym, czym to się różni od ! -path '*/.*'
i find … | grep -v '/\.'
?
fd
Użyj fd
prostej, znacznie szybszej i przyjaznej dla użytkownika alternatywy dla find
. Domyślnie:
.gitignore
Domyślnie ignoruje wzorce z twojego .Sprawdź analizę testu porównawczego .
ls
chyba że wyraźnie o to poproszono: są to całkowicie zwykłe pliki pod każdym względem, tylkols
domyślnie pozwala je zignorować.