GNU/Linux >> Linux の 問題 >  >> Linux

進行状況も確認しながら、ディレクトリから数十億のファイルを削除しますか?

私は30TBのディレクトリを持っており、正式にはすべてJPEGファイルである数十億のファイルが含まれています。次のようなファイルの各フォルダを削除しています:

sudo rm -rf bolands-mills-mhcptz

このコマンドは実行されるだけで、機能しているかどうかに関係なく何も表示されません。

ファイルを削除しているのか、コマンドの現在のステータスを確認したいのですが。

承認された回答:

rm -vを使用できます rmを持つ 削除されたファイルごとに1行を印刷します。このようにして、その rmを確認できます。 確かにファイルを削除するために働いています。ただし、数十億のファイルがある場合は、 rmだけが表示されます。 まだ動作しています。すでに削除されているファイルの数と、残っているファイルの数はわかりません。

ツールpv 進捗状況の見積もりに役立ちます。

http://www.ivarch.com/programs/pv.shtml

rmを呼び出す方法は次のとおりです。 pvを使用 出力例付き

$ rm -rv dirname | pv -l -s 1000 > logfile
562  0:00:07 [79,8 /s] [====================>                 ] 56% ETA 0:00:05

この不自然な例では、 pvに伝えました 1000があること ファイル。 pvからの出力 は、562がすでに削除されており、経過時間が7秒で、完了までの見積もりが5秒であることを示しています。

説明:

  • pv -l <​​/ code> pvを作成します バイトではなく改行でカウントする
  • pv -s number pvに通知します 見積もりができるように、合計は何ですか。
  • logfileへのリダイレクト 最後にクリーンな出力用です。それ以外の場合は、 pvのステータス行 rm -vからの出力と混同されます 。ボーナス:削除されたもののログファイルがあります。ただし、ファイルが巨大になることに注意してください。 / dev / nullにリダイレクトすることもできます ログが必要ない場合。

ファイル数を取得するには、次のコマンドを使用できます:

$ find dirname | wc -l

数十億のファイルがある場合も、これには長い時間がかかる可能性があります。 pvを使用できます ここでも、カウントされた量を確認できます

$ find dirname | pv -l | wc -l
278k 0:00:04 [56,8k/s] [     <=>                                              ]
278044

ここでは、278kファイルをカウントするのに4秒かかったと書かれています。最後の正確なカウント( 278044 )は wc -lからの出力です 。

カウントを待ちたくない場合は、ファイルの数を推測するか、 pvを使用できます。 見積もりなし:

$ rm -rv dirname | pv -l > logfile

このように、終了する見積もりはありませんが、少なくとも、すでに削除されているファイルの数がわかります。 / dev / nullにリダイレクトします ログファイルが必要ない場合。

関連:シェルスクリプトでバッファにデータを追加する方法は?

Nitpick:

  • 本当にsudoが必要ですか ?
  • 通常はrm-r 再帰的に削除するには十分です。 rm -fは必要ありません 。

Linux
  1. Wgetを使用してWebディレクトリからファイルを再帰的にダウンロードするにはどうすればよいですか?

  2. ディレクトリ内のファイル数を数える最良の方法は何ですか?

  3. CLI からの Berkeley DB ファイルの検査

  1. STDIN からデータを読み取りながらファイルを圧縮する

  2. あるディレクトリから別のディレクトリに最新の上位 10 個のファイルをコピーする方法は?

  3. ディレクトリから最近削除されたファイルを一覧表示する方法は?

  1. コマンドラインを使用してディレクトリ内のファイルの数を取得するにはどうすればよいですか?

  2. ファイルを移動して進行状況を表示する方法(例:プログレスバーを使用)?

  3. Linux の一時ディレクトリはどこにありますか?