Grazie a @ nove9 per aver indicato il comando locate
come opzione. Ecco alcune osservazioni aggiuntive.
Corrispondenza parziale e più termini di ricerca
Spesso ho cartelle in cui posso ricordare solo parzialmente nomi di file e cartelle. E le cartelle potrebbero non essere necessariamente nella cartella padre immediata (ad esempio, potrebbe essere la cartella madre della cartella principale). Un modo per eseguire una ricerca di corrispondenza parziale di tipo booleano consiste nel combinare i comandi grep
convogliati. Ad esempio:
locate AB | grep readme
ridurrebbe ( |
) tutti i percorsi che corrispondono a AB in grep
. Anche i percorsi rimanenti corrispondono a readme
. Pertanto, questo corrisponderebbe a ABC/foo/readme.txt
, ABC/foo/readme.md
e ABC/readme.txt
.
Ricerca senza distinzione tra maiuscole e minuscole
La ricerca Spotlight sembra insensibile alle maiuscole e minuscole, che generalmente sembra conveniente. Per lo stesso comportamento con locate
e grep
usa il -i
flag.
locate -i AB | grep -i readme
I
comandi grep
possono essere applicati ripetutamente per filtrare ulteriormente i risultati.
Selezione di un percorso da un elenco
In alcuni casi, anche dopo diversi greps, trovo che posso ancora essere lasciato con una manciata di fiammiferi e voglio solo selezionarne uno dalla lista. Esistono vari modi per selezionare una singola riga per numero. Ecco un paio di opzioni per selezionare ad esempio la riga 4 di alcuni elenchi di percorsi da un locate search
locate AB | grep readme | awk 'NR==4'
Apertura di un percorso selezionato
Come note @nineths una volta ottenuto un singolo file, l'output può essere aperto con un'applicazione predefinita:
locate foo | xargs open
o con un programma specificato sul percorso come Vim
locate foo | xargs mvim
xargs
non funziona, almeno per impostazione predefinita, se il percorso include uno spazio.
Un'altra opzione è quella di inviare il percorso negli appunti e incollarlo da qualche parte (ad esempio, in una ricerca Alfred o in una finestra di dialogo Vai alla cartella).
locate foo | pbcopy
Alternativa alla selezione da riga di comando e all'apertura
Presumibilmente ci sono diverse alternative all'utilizzo della riga di comando per selezionare e aprire un percorso dall'elenco dei percorsi restituiti.
- In iTerm2 tenendo premuto il tasto comando e facendo clic su un URL o su un percorso file / cartella si aprirà l'URL o il file nell'applicazione predefinita.
Personalizzazione di locate
Questo tutorial di Geek Stuff illustra varie personalizzazioni al comando locate
(ad es. , filtrando determinate directory e tipi di file).
Potenziale usare mdfind invece
In generale, tutti gli esempi che utilizzano locate sopra potrebbero essere sostituiti con mdfind
.
locate
generalmente fa riferimento a file di sistema aggiuntivi mentre mdfind
accede a quei file indicizzati da Spotlight. mdfind
è case insensitive di default, che generalmente trovo conveniente. mdfind
ha anche opzioni di ricerca aggiuntive, ad es. puoi aggiungere kind:fol
per le cartelle. La differenza principale è che mdfind
cerca solo il nome del file. Pertanto, se le informazioni sul percorso vengono utilizzate per limitare la ricerca, è necessario che vengano visualizzate nei filtri grep
di pipe successivi.
Ad esempio, se volessi trovare una cartella denominata 2012
dove subjectname
appare nel percorso, il seguente potrebbe funzionare
mdfind name:2012 kind:fol | grep subjectname
Tieni presente che name:
sembrava essere richiesto perché il testo era costituito da tutti i numeri.
Pensieri di riepilogo
-
Velocità : il comando
locate
viene eseguito più rapidamente del comando find
ma a una velocità simile a mdfind
.
-
Possibilità di filtrare : se disponi di informazioni che corrispondono parzialmente al nome del file o desideri utilizzare strumenti di ricerca aggiuntivi
mdfind
sembra migliore (supponendo che il file sia indicizzato da Spotlight).
In generale tutti questi approcci sembrano un po 'complicati e hanno una buona dose di inutili spese sintattiche.