Führen Sie ein Skript über mehrere Dateien in Unix aus

7

Ich habe angefangen, Shell-Skripte zu lernen. Ich habe ein Perl-Skript, das auf einer Datei läuft. Wie würde ich ein Shell-Skript schreiben, um das Perl-Skript einige Male auf allen Dateien mit dem Schlüsselwort "filename" auszuführen?

Also auf Englisch,

%Vor%

Danke.

    
Dirk 06.07.2009, 16:10
quelle

8 Antworten

10
%Vor%     
Bob F. 06.07.2009, 16:17
quelle
4
%Vor%

Der umgekehrte Schrägstrich vor dem Befehl 'ls' dient dazu, Aliasnamen vorübergehend zu deaktivieren.

HTH

    
Rob Wells 06.07.2009 16:14
quelle
4
___ answer1087862 ___
%Vor%

Der umgekehrte Schrägstrich vor dem Befehl 'ls' dient dazu, Aliasnamen vorübergehend zu deaktivieren.

HTH

    
___ answer 1087861 ___
%Vor%

edit: entsprungene Sterne, wollte das Markup hier nicht

    
___ answer1087880 ___
%Vor%     
___ qstntxt ___

Ich habe angefangen, Shell-Skripte zu lernen. Ich habe ein Perl-Skript, das auf einer Datei läuft. Wie würde ich ein Shell-Skript schreiben, um das Perl-Skript einige Male auf allen Dateien mit dem Schlüsselwort "filename" auszuführen?

Also auf Englisch,

%Vor%

Danke.

    
___ answer1087856 ___

In bash:

%Vor%     
___ qstnhdr ___ Führen Sie ein Skript über mehrere Dateien in Unix aus ___ answer1087865 ___

Und wenn Sie Leerzeichen in Ihren Dateinamen haben, verwenden Sie die alte Standby

%Vor%     
___ tag123shell ___ Der Begriff "Shell" bezieht sich auf eine allgemeine Klasse textbasierter interaktiver Befehlsinterpreter, die meist mit den Unix- und Linux-Betriebssystemen verknüpft sind. Bei Fragen zum Shell-Scripting verwenden Sie bitte ein spezifischeres Tag wie 'bash', 'powershell' oder 'ksh'. Ohne ein spezifisches Tag sollte eine portable (POSIX-konforme) Lösung angenommen werden, obwohl zusätzlich 'posix' oder 'sh' zu bevorzugen ist. ___ tag123unix ___ Das Unix-Betriebssystem ist ein Allzweck-Betriebssystem, das von Bell Labs in den späten 1960er Jahren entwickelt wurde und heute in verschiedenen Versionen existiert. Wichtiger Hinweis: Dieses Tag dient ausschließlich zur Programmierung von Fragen, die direkt mit Unix zu tun haben; Allgemeine Softwareprobleme sollten an die Unix & Linux Stack Exchange-Site oder an Super User gerichtet werden. ___ answer1087857 ___

FILES=" Schlüsselwort "

für f in "$ FILES" machen   perl meinskript.pl $ f getan

Von Ссылка

    
___ answer1087864 ___

Ein Liner:

%code%

Anstelle der durch Leerzeichen getrennten Liste von Dateinamen können Sie auch Platzhalter verwenden, zum Beispiel:

%code%

    
___ answer1088013 ___

Ich persönlich benutze die zsh-Shell, die Ihnen eine sehr gute Möglichkeit bietet, einen Befehl rekursiv auf einer Reihe von Unterverzeichnissen auszuführen. Es erlaubt Ihnen auch, das Suffix der Datei zu ändern, was bei der Verwendung von lame zum Erstellen von MP3-Dateien mit .wav-Dateien praktisch ist:

für i in ** / *. wav; lahm $ i $ i: r.mp3

Sie können auch die Ausgabe eines Befehls an einen anderen übergeben, den ich häufig benutze, wenn ich eine Anzahl von BitTorrent-Dateien herunterlade und den Prozentsatz sehen möchte, den jeder Download abgeschlossen hat:

für i in ** / *. txt; grep -H Prozent $ i | Schwanz -1

    
___
swegi 06.07.2009 16:14
quelle
2

Und wenn Sie Leerzeichen in Ihren Dateinamen haben, verwenden Sie die alte Standby

%Vor%     
Michiel Buddingh 06.07.2009 16:15
quelle
1

In bash:

%Vor%     
Bjarke Freund-Hansen 06.07.2009 16:13
quelle
1

Ein Liner:

$ for file in filename1 filename2 filename3; do perl myscript $file; done

Anstelle der durch Leerzeichen getrennten Liste von Dateinamen können Sie auch Platzhalter verwenden, zum Beispiel:

$ for file in *.txt *.csv; do perl myscript $file; done

    
Marius Kjeldahl 06.07.2009 16:14
quelle
0

FILES=" Schlüsselwort "

für f in "$ FILES" machen   perl meinskript.pl $ f getan

Von Ссылка

    
mcandre 06.07.2009 16:13
quelle
0

Ich persönlich benutze die zsh-Shell, die Ihnen eine sehr gute Möglichkeit bietet, einen Befehl rekursiv auf einer Reihe von Unterverzeichnissen auszuführen. Es erlaubt Ihnen auch, das Suffix der Datei zu ändern, was bei der Verwendung von lame zum Erstellen von MP3-Dateien mit .wav-Dateien praktisch ist:

für i in ** / *. wav; lahm $ i $ i: r.mp3

Sie können auch die Ausgabe eines Befehls an einen anderen übergeben, den ich häufig benutze, wenn ich eine Anzahl von BitTorrent-Dateien herunterlade und den Prozentsatz sehen möchte, den jeder Download abgeschlossen hat:

für i in ** / *. txt; grep -H Prozent $ i | Schwanz -1

    
sness 06.07.2009 16:47
quelle

Tags und Links