web-dev-qa-db-ja.com

findを使用する場合、lost + foundをスキップする必要があります

私はUbuntuを初めて使用しますが、Linux/Unixの経験はあまりないので、この問題を解決するまでしばらくお待ちください。

映像を記録し、スクリーンショットを撮り、フォルダーに保存するカメラシステムがあります。問題は、新しいファイルが古いファイルを上書きしないため、ファイルシステムがいっぱいになり、すべての新しいファイルが破棄されることです。

そのため、Ubuntu GUIにスケジュールタスクをインストールし、毎日実行するタスクを作成しました。タスクは次のとおりです。

find /media/dvr/* -type f -mtime 0 -exec rm -rf {} \; 

テスト目的で-mtime0に設定していますが、これを機能させることができれば7に設定されます。

私が抱えている問題は、/dvrフォルダーにlost + foundフォルダーがあることです。そのフォルダに到達すると、表示する権限がないと表示され、検索は終了しません。 Sudoを使用して所有権とrwxアクセス権を取得および変更しましたが、それでも解決しません。

Findを使用して、やりたいことを達成する方法はありますか? /dvr/フォルダーを削除するより効率的な方法はありますか?

私が言ったように、これに新しいと良くしようとしている。どんな助けも大歓迎です!

2
Nick

ただやる:

find /media/drv -name lost+found -Prune -o -type f -exec echo '{}' ';'

一般に、stderrを/ dev/nullにリダイレクトすることは非常に悪い考えです。 stderrの重要なポイントは、予期しないエラーを表示することです。特定のエラーが予想される場合は、コマンドを作成してエラーを回避してください。

3
Jay

findコマンドは、私が知る限り、許可の問題で終了しません。別の理由でファイルが見つからない場合があります。私が提案できるのは、出力に誤解を招くメッセージが表示されないようにstderrを排除し、rm -rfを置き換えるechoを使用してコマンドをテストすることです。

find /media/drv/ -type f -mtime 7 -exec echo {} \; 2> /dev/null

これにより、最終バージョンで削除されるファイルがrm -rfでリストされます。 lost+foundディレクトリをスキップしたい場合(これは必要ありません)、次を使用します。

find /media/drv/ -type f -mtime 7 -not -wholename "*lost+found*" -exec echo {} \; 2> /dev/null
2
pablomme