200,000を超えるファイルと異なる名前の出力を見つける方法

200,000を超えるファイルと異なる名前の出力を見つける方法

私たちは、多数のファイル(500万以上)を含むSANを持っています。開発者スクリプトの奇妙なエラーのためにいくつかのファイルが削除され、今削除されたファイルを特定する必要があります。

これで、次のように確認する必要があるファイル名のリスト(データベース内)があります。

49
50
51
52

find次のコマンドを使用して、単一のファイルと複数のファイルに対してこれを行う方法を見つけました。

find /mnt/SAN/documents/ -type f -name"92441_1"

この方法は機能しますが、このコマンドを使用して200,000を超えるファイルを確認することはできません。それで、find私のファイルから入力を取得するコマンドを取得する方法を知っている人がいるのか、それともこのタスクを実行するために使用できる他のコマンドがあるのか​​疑問に思います。

ベストアンサー1

私は次のようにします(GNUツールを使用していると仮定):

find /mnt/SAN/documents -type f -print0 | awk -F / '
  NR == FNR{check[$0]; next}
  $NF in check {print "found:", $0; delete check[$NF]}
  END {
    for (i in check)
      print "Not found:", i
  }' filename.list RS='\0' -

これはになりますfilename.list

またはすべての発生を報告します。

find /mnt/SAN/documents -type f -print0 | awk -F / '
  NR == FNR{check[$0]; notfound[$0]; next}
  $NF in check {print "found:", $0; delete notfound[$NF]}
  END {
    for (i in notfound)
      print "Not found:", i
  }' filename.list RS='\0' -

おすすめ記事