0

サブフォルダー内の特定のファイルの種類を再帰的に、または反復的に削除する方がよいでしょうか?

再帰の例:

  • r = (サブフォルダーがサブフォルダーを開いている場合、1 週間より古い .bak ファイルを削除し、サブフォルダーがなく、1 週間より古い .bak ファイルがない場合は、1 週間より古い .bak ファイルを印刷しません)
  • フォルダー 1 (r を実行) > サブフォルダー 1 (r を実行) > サブフォルダー 2 (r を実行) > サブフォルダー n (r を実行) > プログラムは 1 週間前の .bak ファイルを削除し、それぞれをバックアウトします。フォルダ。

繰り返しの例:

  • del = 1 週間以上前の .bak ファイルを削除
  • search = サブフォルダーを検索します。サブフォルダーが見つかった場合は、それらを配列に入れます。
  • 開く = 各サブフォルダーを一度に 1 つずつ開き、各サブフォルダーで del を実行し、再度検索して、プログラムがこのブランチ内にある最後のサブフォルダーに到達するまで繰り返します。
  • ルートから次のサブフォルダー ブランチに移動します。
  • エラー = サブフォルダーがなく、1 週間より古い .bak ファイルがない場合は、1 週間より古い .bak ファイルが見つかりません
  • フォルダー 1 > 削除またはエラー > 検索 > 開く > 移動 > 印刷: # .bak ファイルが # 秒で削除されました...
4

1 に答える 1

0

反復の場合、スタックまたはキューを手動で維持する必要があります (DFS または BFS の場合)。ファイルだけでなくディレクトリも削除したい場合は、DFS が最適です (空のディレクトリしか削除できないため)。システムスタックを使用して深さ優先検索を行い、各ディレクトリで必要なことを行う方がよいと思います。ディレクトリエントリとディレクトリの深さが非常に長く、発生する可能性が低い場合を除き、スタックはスタックオーバーフローを引き起こすほど大きくならないはずです。

を使用してスタックサイズを設定することもできますulimit

于 2013-07-29T05:32:56.273 に答える