ファイルとディレクトリを削除するコマンドを探す[閉じる]

ファイルとディレクトリを削除するコマンドを探す[閉じる]

次の構文を使用してフォルダを削除することはできません。助けてもらえますか?

処置:特定のパスから6時間以上経過したファイルとフォルダを削除する

find $file -name "*" -mmin +360 -exec rm -f {}\;

ベストアンサー1

コマンドには2つの問題があります。

  1. このコマンドはrm -f dir名前付きディレクトリを削除しませんdir。このrmdirコマンドを使用するか、またはを使用する必要がありますrm -r dir

  2. 削除するには、ディレクトリが空である必要があります。ファイルが存在する場合、dir1/file1そのコマンドは最初にdir1削除し、次に(失敗)削除を試みますdir1/file1rm -r

修正の2番目の部分は簡単です。-depthfind コマンドに、深さ優先順にファイルを処理するように指示するフラグを追加します。

修正の最初の部分はより難しく、必要な操作に依存します。

問題は、「指定されたパスから6時間以上経過したファイルとフォルダを削除する」というフレーズにあります。dir112時間前に作成してdir1/file111時間前に作成しましたが、1時間前に編集した場合はどうすればよいですか?あなたの説明が示すように、ファイルが追加されてから11時間前に最後に変更されたため、ディレクトリを削除し、1時間前に変更されたため、ファイルを削除したくありません。ただし、ファイルにはディレクトリが必要です。

私の推測では、削除したいようです。最後に変更されてから6時間以上経過したディレクトリです。より明確にするために、ここに追加の括弧付きのコマンドがあります。これが何を-o意味するのかを知る必要がありますor

    find $file -depth -mmin +360 '(' '(' -type f -exec rm -f '{}' ';' ')' -o \
           '(' -type d -empty -exec rmdir {} ';' ')' ')'

あなたのバージョンのfindオブジェクトが-emptyそれを無視し、空でないディレクトリを削除できないというエラーメッセージを無視する場合。

おすすめ記事