2017-01-29 3 views
-2

Ich habe zwei C++ - Codes und mehr als tausend Dateien, um dort Eingaben zu sein. Ich möchte das in bash automatisieren. Denn jetzt habe ichWie automatisiert man die Funktion für alle Dateien in bash?

#!/bin/bash 
for each in find \data -iname '*.dat'; 
do ./ppd $file; 
    ./porenet $file; 
done 

Als Experiment habe ich zwei DAT-Dateien in den Ordner, nicht tausend. Aber es nur erste Funktion für beide .dat-Dateien anwenden. Das zweite (Porennetz) wird nur auf die erste .dat-Datei angewendet. Was muss ich ändern, damit es funktioniert? Danke

+0

'$ file' ist nicht gesetzt. '\ data' ist dasselbe wie' data'. Ihre Schleife iteriert über vier Strings, 'find',' data', '-iname' und' * .dat'. – melpomene

+0

Bitte werfen Sie einen Blick: http://www.shellcheck.net/ – Cyrus

+0

@Cyrus, korrigierte ich es wie dieser Dienst empfohlen, und jetzt funktioniert es überhaupt nicht – Callmemaybe

Antwort

0

Ich denke, Ihre Frage bedeutet, dass Sie ppd und dann porenet auf allen Dateien ausführen möchten. Wenn ja, können Sie wahrscheinlich tun sie leicht parallel wie dies mit GNU Parallel:

find . -name \*.dat -print0 | parallel --dry-run -0 './ppd {}; ./porenet {}' 

Wenn die Ausgabe aussieht, was Sie wollen, entfernen Sie die --dry-run und führen Sie es erneut für real.

Erstellen Sie zuerst eine Sicherung.

Verwandte Themen