Bash: Wie durchläuft man die Verzeichnisstruktur und führt Befehle aus?

8

Ich habe eine große Textdatei in mehrere Sätze kleinerer Dateien aufgeteilt, um Leistungstests durchzuführen. Es gibt eine Reihe von Verzeichnissen wie folgt:

%Vor%

Es ist wichtig zu beachten, dass in jedem Verzeichnis eine zunehmende Anzahl von Dateien vorhanden ist. Was ich tun muss, ist eine ausführbare Datei für jede der Textdateien in den Ausgabeverzeichnissen auszuführen. Der Befehl sieht in etwa so aus wie in einer einzigen Datei:

%Vor%

Hier ist der Parameter -i die Eingabedatei und der Parameter -o der Ausgabeort.

In C # würde ich die Verzeichnisse durchlaufen, um die Liste der Dateien in jedem Ordner zu erhalten, und dann die Zeilen durchlaufen, um die Befehlszeilen auszuführen. Wie durchlaufe ich eine Verzeichnisstruktur wie diese mit bash und führe den Befehl mit den richtigen Parametern basierend auf dem Ort und den Dateien an diesem Ort aus?

    
Brian Lyttle 16.06.2009, 19:34
quelle

6 Antworten

8

Für solche Dinge verwende ich immer find zusammen mit xargs :

%Vor%

Nun, da Ihr Skript nur eine Datei nach der anderen verarbeitet, verwenden Sie -exec (oder -execdir ) direkt wie vorgeschlagen, ist genauso effizient, aber ich bin es gewohnt, xargs zu verwenden, da dies im Allgemeinen viel effizienter ist, wenn ein Befehl eingegeben wird, der viele Argumente gleichzeitig verarbeitet. So ist es ein sehr nützliches Werkzeug, um in seinem Utility-Gürtel zu bleiben, also dachte ich, dass es erwähnt werden sollte.

    
Lars Haugseth 16.06.2009, 20:06
quelle
7

Etwas wie:

%Vor%     
nikudesu 16.06.2009 19:41
quelle
2

Wie andere vorgeschlagen haben, verwenden Sie find(1) :

%Vor%     
Adam Rosenfield 16.06.2009 19:56
quelle
1

Aus den bereitgestellten Informationen klingt das so, als wäre das eine ganz geradlinige Übersetzung Ihrer C # Idee.

%Vor%     
ephemient 16.06.2009 20:25
quelle
0

Das ist der Befehl find .

Ссылка

    
S.Lott 16.06.2009 19:41
quelle
0

Verwenden Sie find und exec. Sehen Sie sich die folgenden

an

Ссылка

    
Methos 16.06.2009 19:46
quelle