2017-03-13 2 views
0

Pipeline Ich habe versucht, mit einem MDFIND zu finden, um bestimmte Dateien zu finden. Ich benutze nicht finden, weil es zu lange dauert, über ein Windows-Laufwerk zu suchen, und ich bin auf einem Mac. Ich habe mit mdutil indexiert und möchte nun einfach nach Dateien mit dem Muster suchen, bei dem die Datei im Pfad mit Beispiel beginnt. "/ Volumes/DRIVE/EINIGE/PFAD/DAD14 -BLAH-BLAH.jpg". Es muss einen einfacheren Weg geben, um mit mdfind nach einem jpg größer als 500k zu suchen und den Pfad mit einem Muster zu grepsen? Unten ist der Code, den ich gefunden habe, aber es werden keine Ergebnisse zurückgegeben. Jede Hilfe wird sehr geschätzt.Wie mdfind zu grep mit einem Muster und dann cp

cat filelist.txt | while read -r FILE; 
    do mdfind -onlyin /Volumes/DRIVE/ 'kMDItemKind = "*image" && kMDItemFSSize > 500000' -name "$FILE" -0 
    | xargs -0 -I{} grep -i -E '.*\/[a-zA-Z]{1,3}[0-9]+.*\.(jpe?g|png|tiff?|psd)' {} 
    | xargs -0 -I{} cp -a {} ./images; done; 

Bass

Antwort

0

Sie wollen nicht xargs für den grep Befehl verwenden. Dies bedeutet, dass die Inhalte der gefundenen Dateien für Übereinstimmungen des Musters gegrastet werden. Sie möchten die Ausgabe von mdfind tatsächlich grep.

Das bedeutet auch, dass Sie -0 mit mdfind nicht verwenden möchten. Sie möchten, dass sich jeder Dateipfad in einer separaten Zeile befindet, da grep die übereinstimmenden Zeilen ausgibt. Daher möchten Sie auch -0 mit dem endgültigen xargs-Befehl nicht verwenden.

Sie möchten wahrscheinlich verlangen, dass die Erweiterung am Ende der Zeichenfolge ist. Und Sie möchten, dass der explizite Schrägstrich (/) in Ihrem Muster der letzte Schrägstrich in der Zeichenfolge ist.

cat filelist.txt | while read -r FILE; 
    do mdfind -onlyin /Volumes/DRIVE/ 'kMDItemKind = "*image" && kMDItemFSSize > 500000' -name "$FILE" 
    | grep -i -E '.*\/[a-zA-Z]{1,3}[0-9]+[^/]*\.(jpe?g|png|tiff?|psd)$' 
    | xargs -I{} cp -a {} ./images; done; 
+0

Vielen Dank für die schnelle Antwort, habe ich versucht, dass aber halte die folgende Störung zu erhalten: ** xargs: nicht genügend Platz für Argument ** – user5188505

+0

Könnte es, dass es sein sind Leerzeichen im Dateinamen daher, warum ich ursprünglich mit die Option -0? – user5188505

+0

Hoppla, ich habe es versäumt, die "-0" von den restlichen 'xargs' zu entfernen. Ich habe es behoben. –

Verwandte Themen