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 -nameinvece 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 finde man grepper 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 FILENAMEpotrebbe 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.
shoptcomando 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 egrepparte è importante, ma hai usato egrepnella tua risposta quindi l'ho inclusa)
grepusa 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'.