Risposte:
L'equivalente diretto è
find . -iname <filename>
che elencherà tutti i file e le directory chiamati <filename>
nella directory corrente e tutte le sottodirectory, ignorando il caso.
Se la tua versione di find non supporta -iname
, puoi -name
invece utilizzare . Si noti che a differenza di -iname
, -name
è sensibile al maiuscolo / minuscolo.
Se si desidera elencare solo i file chiamati <filename>
e non le directory, aggiungere-type f
find . -iname <filename> -type f
Se si desidera utilizzare i caratteri jolly, è necessario inserire virgolette intorno, ad es
find . -iname "*.txt" -type f
altrimenti la shell lo espanderà.
Come altri hanno sottolineato, puoi anche fare:
find . | grep "\.txt$"
grep
stamperà linee basate su espressioni regolari, che sono più potenti dei caratteri jolly, ma hanno una sintassi diversa.
Vedi man find
e man grep
per maggiori dettagli.
<filename>
come marker per l'inserimento dell'utente è una cattiva abitudine nell'ambiente della riga di comando, dove la < and >
maggior parte delle volte ha un significato specifico. Suggerisco solo di usare filename
, forse FILENAME per enfatizzarlo. La maggior parte delle persone capirà e coloro che non lo faranno potrebbero causare danni se non capiscono che non dovrebbero colpire un segno minore o maggiore.
<filename>
è una convenzione in molti documenti UNIX, quindi penso che sia utile che le persone ne siano consapevoli, ma sono d'accordo che FILENAME
potrebbe essere più facile da capire.
find -iname <filename>
è migliore poiché non fa distinzione tra maiuscole e minuscole come DOS
Alcune shell lo consentono ls **/filename
, il che è abbastanza conveniente.
shopt -s globstar; echo **/filename
è equivalente a find . -name "filename"
. Funziona anche in zsh.
shopt -s globstar
, probabilmente funzionerà per te. Il globbing ricorsivo è una funzionalità disponibile solo in alcune shell e, a volte, non è attivo per impostazione predefinita.
shopt
comando abilita l'opzione globstar on
. Ora funziona perfettamente. Molte grazie.
Puoi farlo con
find . | egrep filename
find . -regextype posix-egrep -regex '.*filename.*'
(non so se la egrep
parte è importante, ma hai usato egrep
nella tua risposta quindi l'ho inclusa)
grep
usa espressioni regolari, mentre il comando DOS usa caratteri jolly della shell.
find . -name "*.*"
non farà ciò che ti aspetteresti da uno sfondo DOS. I globs sono abbastanza vicini da essere riconoscibili, tuttavia, mentre le regex sono una bestia completamente nuova.
*.*.*
in un moderno dos cioè windows cmd? Che dire *.*.*.*
?
Può anche essere: tree -if </your/path>
o 'pwd'
come percorso
<filename>
contiene caratteri jolly, utilizzare le virgolette intorno, ad esfind . -name '*.txt'
.