私が書いた:
locate Origin90SR2DVD.iso
そして、私はそのファイルが置かれているパスを受け取りました:
/home/david/Origin90SR2DVD.iso
それから私は書いた:
cd /home/david
私は実行しました:
ls -lrth
Origin90SR2DVD.iso
ファイルが見つかりません。
ファイルがそのパスにないのはなぜですか?
locate
(Origin90SR2DVD.iso
)のデータベースファイルがcron
(または自分)によって最後に更新されたときに、/home/david
ファイルが/var/lib/mlocate/mlocate.db
の場所にあった可能性があります。 locate
はデータベースファイル内のファイル名(高速であるため)であるため、検索中はliveではない手法と考えることができます。 。
locate
はファイルの場所を示していますが、そこにファイルが存在しない可能性があります(削除されるか、他の場所に移動される可能性があります)。
何が起こっているのかを確認する方法は2つあります。
Sudo updatedb
でlocate
データベースファイルを更新してから、同じlocate
コマンドを実行できます。
または、find
を使用して、live検索を実行できます。ホームディレクトリ内のファイルを再帰的に検索するには:
find ~ -type f -iname 'Origin90SR2DVD.iso' -print -o -path ~/.gvfs -Prune
-path ~/.gvfs -Prune
(Eliah Kaganに感謝)を使用して、検索中に~/.gvfs
ディレクトリに降りないようにします。そうしないと、ディレクトリがルートによって所有されているため、気が散る許可拒否メッセージが表示されます。 -print -o -path ~/.gvfs -Prune
を削除することで、これを省略できます(メッセージを表示できます)。
ファイルシステム階層内のすべての可能な場所を探すこともできます。ここでは、ファイルを格納できる場所をいくつか検討しましたが、ファイルが他のディレクトリにある場合は珍しいでしょう。
Sudo find /home /root /opt /usr/local /mnt -type f -iname 'Origin90SR2DVD.iso'
編集:
locate
のデータベースは、cron
によって毎日更新されます。私のシステムでは、毎日午前6時25分に実行されています(/etc/crontab
で確認してください)。
実際、anacron
はcron
ジョブを実行して、その時点でコンピューターがオフになっている場合、次回コンピューターがオンになった後にジョブが実行されるようにします。 anacron
が使用できない場合、run-parts
は、/etc/cron.daily
ディレクトリ内のファイル(mlocate
を含む)を指定の時間にのみ実行します。
Sudo updatedb
を実行して、mlocateデータベースが最新であることを確認します。