2016-04-18 27 views
0

Ich habe ein Skript, das find verwendet. Bis jetzt war ich in Ordnung mit -exec, um zu bekommen, was ich getan habe, aber ich bin jetzt in ein bisschen eine Straßensperre geraten.Führen Sie einen Befehl einmal aus, wenn Sie Dateien finden

Wenn Dateien gefunden werden, möchte ich einen Befehl auszuführen einmal (so -exec {} \; ist nicht das, was ich suche), und es ist ein Befehl, der keine Dateien als Parameter übernimmt, so -exec {} \+ won‘ t Arbeit (oder zumindest nicht mit der Version von find auf meinem FreeBSD 10.1-System.

Was ist der beste Weg, dies zu gehen zu tun?

Antwort

1

Sie auf Rohr müssen die Dateinamen zu xargs.

Ich glaube, ich habe einen wichtigen Hinweis verpasst Ere: Ihr Befehl interessiert sich nicht für die Dateinamen. Also wollen Sie einfach einen Befehl ausführen, wenn Dateien gefunden wurden? In diesem Fall könnte man so etwas versuchen:

find -name nosuchfile | if read; then echo "hello"; fi; 
0

Die -quit Primär kann mit -exec in Verbindung verwendet wird, ist -quit in sowohl der BSD und GNU find Implementierungen. Das folgende Beispiel wurde erstellt, um sicherzustellen, dass find nach der ersten Übereinstimmung beendet wird, unabhängig vom Beendigungsstatus des Dienstprogramms.

find path... [expression] \(-exec utility \; -quit -or -quit \) 
Verwandte Themen