Con quali opzioni devo utilizzare find
per escludere i file nascosti?
.hidden/visible.txt
?
Con quali opzioni devo utilizzare find
per escludere i file nascosti?
.hidden/visible.txt
?
Risposte:
Ho trovato questo qui :
find . \( ! -regex '.*/\..*' \) -type f -name "whatever"
\( ! -name '.*' \)
?
\( ! -path '*/.*' \)
sarebbe.
Sembra che il modello di negazione globale non sia ben noto. Quindi puoi usare:
find . -name "[!.]*"
Questo non risponde alla tua domanda, ma per il compito di trovare file non nascosti mi piace lasciare che trovi tutti i file quindi filtrali con grep.
find . -type f | grep -v '/\.'
Simile al tuo approccio ma forse un po 'più semplice.
Ho scritto una sceneggiatura chiamata findnh
che credo gestisca alcuni casi limite meglio delle risposte a questa domanda che sono riuscito a trovare sul web.
#!/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 \) \) "$@"
Ad esempio, è possibile trovare file e directory non nascosti all'interno di una directory nascosta specificata in modo esplicito con un comando simile findnh ~/.hiddendir/
, che verrà mostrato ~/.hiddendir/file
ma non ~/.hiddendir/.superhiddenfile
.
findnh ~/.hiddendir/
, non ottengo nulla. A parte questo, in che cosa differisce da ! -path '*/.*'
e find … | grep -v '/\.'
?
fd
Utilizzare fd
, un'alternativa semplice, molto più veloce e user-friendly afind
. Per impostazione predefinita, esso:
.gitignore
, per impostazione predefinita.
ls
se non diversamente richiesto: sono file completamente ordinari sotto tutti gli aspetti, è solo chels
ti consente di ignorarli per impostazione predefinita.