Locate

不能刪除文件,但可以刪除父目錄

  • April 2, 2016

所以基本上,我正在嘗試刪除文件:

/var/lib/mysql/db/nomNomina2.*

當我用定位查找它們時,我得到以下輸出:

/var/lib/mysql/db/nomNomina2.MYD
/var/lib/mysql/db/nomNomina2.MYI
/var/lib/mysql/db/nomNomina2.frm

但後來我嘗試

$ rm -fv  /var/lib/mysql/db/nomNomina2.frm

我沒有得到任何輸出,但使用定位時文件仍然顯示。

請注意,我可以在同一位置創建和刪除具有相同文件名的文件,但在使用定位時它仍會顯示,並且我將無法創建另一個具有相同名稱的表。

有什麼想法可能導致這種情況嗎?文件系統混亂?如何糾正它?

locate對於有關係統上存在哪些文件的實時、目前資訊**不可靠。**資訊記憶體在數據庫中。

還要考慮著名的線路,帶有連結:

它不工作!我應該責怪記憶體嗎?

有關您的盒子上現在存在哪些文件/目錄的實際目前資訊,請使用lsor findor stator test -e filename && echo it is thereor even printf %s\\n *。除了會給你關於你的文件系統的最新資訊之外,幾乎所有的東西。locate

另請參閱LESS=+/BUGS man locate(在我的系統上)部分讀取:

BUGS
 The locate program may fail to list some files that are present, or may
 list files that have been removed from the system.  This is because
 locate only reports files that are present in the database...

您可以執行updatedb,但老實說,如果您知道文件的確切位置並且您正在使用locate它們來查找它們……您只是做錯了。 locate告訴你一個路徑。它不會告訴您該路徑上文件的存在或不存在。如果您已經知道文件的路徑,則不需要locate,對嗎?

定位的目的是“快速查找文件名”,不一定準確或可靠。


注意:我不是說“不要使用locate.” 當您不知道某個文件在系統上的什麼位置時,它確實有其用途。但是,一旦您從 獲取路徑名locate,它就已經達到了目的,您現在需要使用其他工具來檢查/驗證/等。你找到的文件。

引用自:https://unix.stackexchange.com/questions/273769