2017-02-22 1 views
-1

Ich muss zuerst nach Dateien in einer Bibliothek suchen, die keine Zeichenfolge enthalten. Dann muss ich aus den resultierenden Dateinamen nach Dateien mit einer Zeichenfolge suchen.Suchen Sie nach Dateien in einem Verzeichnis (auf Putty-Umgebung), die keine Zeichenfolge haben

Zunächst habe ich grep -L auf meiner Kommandozeile versucht, aber es funktioniert nicht. Ich bin ziemlich neu zu Unix, kann jemand bitte helfen beim Aufbau dieser Logik.

Danke!

+0

*** Bitte *** lesen http://stackoverflow.com/help/how-to-ask http://stackoverflow.com/help/dont-ask und http: // Stackoverflow .com/help/mcve, bevor Sie hier weitere Fragen stellen. Viel Glück. – shellter

+0

Kann jemand pls Ansichten auf diesem einen teilen, ich bin hier stecken geblieben, danke! – Rhea

Antwort

0

Hier sind einige Ideen und cmds zu suchen.

(Ihre Beschreibung des Problems mir ist unklar, so gebe ich Ihnen, was wie die wahrscheinlichste Lösung scheint für Sie fragen) ..

eine Testdatei Da kann

echo "a 
b 
c 
d" > /tmp/testFile.txt 

Sie Suche nach einem "Wort" (oder Zeichen) in dieser Datei mit

grep d /tmp/testFile.txt ; echo $? 

der zurück

d 
0 

0 zeigt ein erfolgreich ausgeführtes cmd an, während 1 (oder ein anderer Wert ungleich Null) auf einen Fehler hinweist.

nun die -l Option grep hinzufügen, die „Liste“ die Dateien so, dass die Anforderungen der Optionen erfüllen geliefert:

grep -l e /tmp/testFile.txt ; echo $? 

kehrt nur

1 

Da e wurde nicht in die gefunden Datei, der Name wurde nicht gedruckt.

dagegen für eine Zeichenfolge zu suchen, die in der Datei vorhanden ist sieht aus wie

grep -l d /tmp/testFile.txt ; echo $? 

/tmp/testFile.txt 
0 

das Suchziel angibt, gefunden wurde.


Jetzt müssen Sie einen Weg, um eine Liste aller Dateien auf grep suchen zu bekommen,

cd /path/to/starting/dir/to/search # you know what to put here, right? 
find . -name '*.txt' 

wird eine Liste aller .txt Dateien im aktuellen Verzeichnis erzeugen und in allen Unterverzeichnissen von das aktuelle Verzeichnis

Schließlich können Sie die Liste der .txt Dateien in einer Schleife füttern, die überprüfen können, ob Ihre Zielstring oder nicht

srchStr="e" 
cd /path/to/starting/dir/to/search # you know what to put here, right? 
find . -name '*.txt' \ 
| while read file ; do 
    if ! grep -q "$srchStr" "$file" ; then 
     echo "no $srchStr in $file" 
    fi 
done 

Natürlich existiert, wird dies nicht Ihren Anforderungen entsprechen. Aber poste bitte ein neues Q mit irgendeinem Code, und andere können dir vielleicht helfen. Ich kann nicht mehr Zeit damit verbringen (in nächster Zeit). Suchen Sie nach Tutorials auf unix find, die Schlüssel zum Auflisten aller Dateien ist, so dass Sie dann durch sie mit Grep suchen können.

IHTH

Verwandte Themen