私たちは、多数のファイル(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' -