2016-12-06 5 views
0

Ich versuche, einige Dateien mit Hilfe des Befehls find zu bereinigen, bekomme aber einen seltsamen Fehler im folgenden Szenario.bash - find: fehlendes Argument zu '-exec' Fehler

#!/bin/bash 
find . -type f -newermt 2011-01-01 ! -newermt 2012-01-01 -exec truncate -s 0 {} \; 

Funktioniert ohne Fehler. Aber wenn ich legte eine einfache Abschlussmeldung der unten angegebenen error.See den Code unten

#!/bin/bash 
find . -type f -newermt 2011-01-01 ! -newermt 2012-01-01 -exec truncate -s 0 {} \; 
echo "completed" 

wirft Gibt es einen Syntaxfehler i machen werde.

+1

verwenden Was/Wo ist der Fehler ? – Inian

+0

Sie könnten Anweisungen wie 'find 'kombinieren. -type f-newermt 2011-01-01! -newermt 2012-01-01 -exec truncate -s 0 {} \; ; echo "Hallo" '(oder)' finden. -type f-newermt 2011-01-01! -newermt 2012-01-01 -exec truncate -s 0 {} \; && echo "Hallo" ' – Inian

+0

Der zweite Teil des Codes in der Frage, wo es ein Echo nach dem Befehl find gibt gibt error.Strange Sache ID, wenn ich den Befehl echo zuletzt entfernen es funktioniert gut. – Sam

Antwort

1

Verwenden Sie find Befehl Exit-Code und drucken Sie die Fehlermeldung basierend darauf.

find . -type f -newermt 2011-01-01 ! -newermt 2012-01-01 -exec truncate -s 0 {} \; && echo "File truncation done" 

(oder) laufen nur die Befehle der Reihe nach als

find . -type f -newermt 2011-01-01 ! -newermt 2012-01-01 -exec truncate -s 0 {} \; ; echo "File truncation done" 

(oder) können Sie eine echo Meldung nach dem Abschneiden der einzelnen Dateien als

find . -type f -newermt 2011-01-01 ! -newermt 2012-01-01 -exec bash -c 'file="{}"; truncate -s 0 "$file"; echo "$file" is truncated' \;