2016-12-06 61 views
0

我試圖在find命令的幫助下清理一些文件,但在下面的場景中出現一個奇怪的錯誤。bash - 找到:缺少參數到`-exec'錯誤

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

工作正常,沒有任何錯誤。 但是當我把一個簡單的完成消息拋出下面的error.See下面

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

代碼是否有任何語法錯誤,我想提出。

+1

什麼/在哪裏是錯誤? – Inian

+0

你可以結合諸如'find的語句。 -type f -newermt 2011-01-01! -newermt 2012-01-01 -exec truncate -s 0 {} \; ; echo「Hello」'(或)'find。 -type f -newermt 2011-01-01! -newermt 2012-01-01 -exec truncate -s 0 {} \; && echo「Hello」' – Inian

+0

在find命令後面有echo的問題中的第二段代碼會給出error.Strange事件ID,如果我最後刪除了echo命令,它將正常工作。 – Sam

回答

1

使用find命令的退出代碼並基於此打印錯誤消息。

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

(或)剛剛運行的命令依次爲

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

(或)可以將每個文件的截斷後使用echo消息

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