0

ビデオ フォルダをチェックして 7 日以上前のファイルがあるかどうかを確認する Synology NAS 用のスクリプトを作成しました。ただし、削除されていません。エラーメッセージは次のとおりです

sh: of: unknown operand

これが私のスクリプトです:

echo "------- SCRIPT START -------"
sleep 2

if test 'find /volume1/Media/ -mtime +7'
        then
                sleep 2
                echo "Deleting files"
                -exec rm -r {} \;
                sleep 2
                echo "Deleted files"
        else
                echo "There are no files to delete"
fi
4

3 に答える 3

1

コードを次のように書き換えることができます

find /volume1/Media/ -mtime +7 -type f -exec echo rm -f {} \; 

エコーはテスト用です。結果の rm コマンドが気に入ったら削除してください。

ディレクトリも削除したい場合は、次のように変更できます

find /volume1/Media/ -mtime +7 -exec echo rm -rf {} \; 
于 2015-04-18T14:45:27.303 に答える
0

-exec する必要は絶対にありません。{} は正確に何を代用しており、必要ありません。おそらく、実際にファイルを削除したいディレクトリにcdする必要があります。そうしないと、ファイルがあるかどうかを確認してから、pwd内のすべてを削除するように見えるからです。このスクリプトが実行されている場所によっては、これは理想的ではない場合があります。

したがって、テストファイルをそのフォルダーに入れてこれを実行し、実際に何をしようとしているかに応じて、削除したいファイルを 1 つだけ削除するように rm -r * を変更します。

echo "------- SCRIPT START -------"
sleep 2

echo "Checking Game of Thrones"
sleep 2
if test 'find /volume1/Media/ -mtime +7'
    then
            sleep 2
            echo "Deleting files"
            cd /volume1/Media
            rm -r *
            sleep 2
            echo "Deleted files"
            cd
    else
            echo "There are no files to delete"
fi
于 2015-04-18T14:04:10.937 に答える