xargs - wenn Bedingung und Echo {}

8

Ich habe einige Dateien, die bestimmte Zeichenfolgen enthalten. Was ich tun möchte, ist, einen Speicherort für die Datei zu suchen; wenn die Datei grep für das Muster existiert; Wenn es wahr ist, tu etwas.

%Vor%

Die Probleme sind:

  • xargs arbeitet nicht mit der if-Anweisung.
  • echo {} gibt nicht den Dateinamen, sondern {} .

Wie repariere ich diese?

    
Population Xplosive 28.02.2012, 15:05
quelle

4 Antworten

18

Versuchen Sie, den Befehl über eine Shell wie folgt auszuführen:

%Vor%

Der ursprüngliche Befehl wurde von Anführungszeichen und bash -c umgeben.

    
jcollado 28.02.2012, 15:21
quelle
5

Umbrechen Sie die if-Anweisung in einem Aufruf an sh:

%Vor%

Verwenden Sie eine while-Schleife anstelle von xargs

%Vor%

Ich nehme an, Sie möchten mehr als nur den Dateinamen wiedergeben. Wenn das alles ist, was Sie versuchen, verwenden Sie die Option -l von grep:

%Vor%     
glenn jackman 28.02.2012 15:21
quelle
0

Zunächst ist if ein Bash-Befehl und kein ausführbares Programm. xargs benötigt dagegen ein eigenes Programm.

Zweitens teilen die ; -Zeichen wahrscheinlich Ihren Befehl. Du müsstest ihnen entkommen, um sie zu Xargs zu bringen.

Um all dies zu vermeiden, schlage ich Folgendes vor:

%Vor%     
Quota 28.02.2012 15:22
quelle
-1
%Vor%     
Mikhail Deynekin 06.08.2017 15:21
quelle

Tags und Links