Domanda:
Trova la stringa esatta nel contenuto del file dalla riga di comando
Chris Impens
2020-05-23 12:01:30 UTC
view on stackexchange narkive permalink

C'è un modo per fare in modo che mdfind rilevi una stringa esatta, ad esempio "cosa cerco", nel contenuto dei file?Ho provato tutte le ricette (virgolette doppie, virgolette doppie con escape ecc.) Invano.Non mi interessano i file che contengono una o tutte queste parole, solo la stringa esatta.(EasyFind fa il lavoro.) Sto usando macOS Catalina con zsh.

Super domanda Chris - ho aggiunto molto "ecco perché tutti possono facilmente sbagliare nella mia risposta" - fammi sapere se hai bisogno di chiarimenti / abbreviazioni o se ti interessano le maiuscole e le insensibilità diacritiche o anche esigenze di ricerca più specifiche.
Due risposte:
bmike
2020-05-23 17:50:35 UTC
view on stackexchange narkive permalink

Spotlight lo consente ed è il mio strumento preferito, nonostante sia doloroso imparare a farlo solo dalla documentazione di Apple. La pagina di manuale di mdfind è quasi criminalmente negligente per non aver menzionato come cercare una stringa, ma non ne parlerò molto di più qui.

  mdfind 'kMDItemTextContent = "questa stringa esatta"'
 

Presta attenzione alle virgolette doppie e alle virgolette singole e inoltre, quando cerchi aiuto online, se l'articolo menziona NSPredicate o se i riflettori utilizzano due lingue diverse, sei a posto . Se l'articolo dice "x non può essere fatto", considera che forse "L'autore non ha ancora avuto bisogno di imparare a fare x".

Ecco alcuni ottimi punti da cui iniziare con i predicati: la pagina man del registro, eccellenti riferimenti di programmazione come https://nshipster.com che sorvola su quanto siano difficili le espressioni di ricerca in "linguaggio naturale", in particolare quando mischi pcre / regex con il bagaglio SQL.

NSPredicate è una classe Foundation che specifica come i dati devono essere recuperati o filtrati. Il suo linguaggio di query, che è come un incrocio tra una clausola SQL WHERE e un'espressione regolare, fornisce un'interfaccia espressiva in linguaggio naturale per definire le condizioni logiche in cui viene eseguita la ricerca in una raccolta.

Fondamentalmente, per ragioni , i riflettori possono essere molto difficili per i nuovi arrivati, molto confusi sintatticamente, ma soprattutto per alcune cose facili e trovare una stringa in un file è più difficile di tepotrebbe aspettarsi.Il sistema è stato progettato dai programmatori e poi è stata applicata una seconda lingua e ci sono molte informazioni facili da cercare che sono semplicemente sbagliate o incomplete.

I commenti non sono per discussioni estese;questa conversazione è stata [spostata in chat] (https://chat.stackexchange.com/rooms/108371/discussion-on-answer-by-bmike-find-exact-string-in-file-contents-from-command-li).
nohillside
2020-05-23 14:18:28 UTC
view on stackexchange narkive permalink

Potrebbe essere più semplice utilizzare strumenti dedotti per la ricerca di testo all'interno dei file, ad es. grep (parte di macOS) o ag ( brew install ag ):

  fgrep -r "Testo da abbinare" PERCORSO
ag -F "Testo da abbinare" PATH
 
fgrep non è riuscito a trovare ciò che avevo nascosto.installazione di ag non riuscita.
@ChrisImpens Nascosto come?Se è necessario cercare nei file ".dot", potrebbe essere richiesta un'opzione aggiuntiva.Per "ag", vedere la risposta aggiornata.
"nascosto": in bella vista in un file txt.ag ha fatto bene in pochi secondi.fgrep si blocca dopo aver dichiarato 1 "permesso negato".
In realtà, egrep -r "Text to match" PATH è OK, se PATH è qualcosa come ./*.*


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...