2016-12-02 3 views
0

私は自分のシナリオで1つの問題に直面しています。特定の年、すなわち2012年のファイルを見つけてファイルを空にする必要があります。以下のコマンド特定の年のすべてのファイルを見つけてBashスクリプトで空にする方法

作品完全

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

#!/bin/bash 
find . -type f -newermt 2016-01-01 ! -newermt 2017-01-01 -exec truncate -s 0 {} \; 
echo "Cleaning Complete ...." 

は以下のエラーを与える

find: missing argument to `-exec' 

構文や使用しているコマンドの組み合わせに問題がありますか?

+1

上記の行は、「bash」を使って私にとって完全にうまく動作します。 – radix

+0

ヒント:本当に '{}'と '\;'の間に空白がありますか? – radix

+0

はい、上記のコマンドの後にもう1つのコマンドがあります。上記のエラーがスローされます。私が言っているのは 'echo"クリーニング " findです。型式f -newermt 2016-01-01! -newermt 2017-01-01 -exec truncate -s 0 {} \; 'は動作しますが、' echo "cleaning" が見つかりました。型式f -newermt 2016-01-01! -newermt 2017-01-01 -exec truncate -s 0 {} \; echo "Hello cleaned" 'は上記のエラーを出力します。私はコマンドの後に単純なエコーを置く場合、なぜこの奇妙なことが起こっているか、任意のアイデア。 – Sam

答えて

1

以下のコマンドで問題を解決できました。

find . -type f -newermt 2016-01-01 ! -newermt 2017-01-01 -exec truncate -s 0 {} \; && echo "Cleaning Complete ...." 
関連する問題