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?
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:
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%Tags und Links bash if-statement unix echo xargs