題 如何在linux上找到目錄?


我有一個VPS Suse Linux 10.3

我已經登錄了 SSH /膩子 我正試圖找到我的網絡文件所在的位置。

因為我通過FTP上傳一個名為的目錄 httpdocs資料,我假設這個目錄存在於某個地方。

我的谷歌搜索已經教會我這樣做,轉到我的根目錄並鍵入:

find httpdocs -type d

但它說“沒有相應的文件和目錄“。

我怎樣才能找到這個目錄?


410
2018-06-28 17:51


起源


如果有人想知道,問題中的命令會找到所有目錄(-type d)在目錄條目中 httpdocs (相對於當前工作目錄,通常但不一定是目錄)。它失敗並顯示錯誤消息,因為沒有目錄條目 httpdocs 在系統的根目錄中,因此沒有搜索的起點。 - Daniel Beck♦


答案:


它是:

find / -type d -name 'httpdocs'

第一個參數“/”是在哪裡看,在這種情況下“/”它是整個系統。

-name可以是-iname以忽略大小寫

也 - 類型不是強制性的

使用 : 男人找到 了解更多選擇


562
2018-06-28 18:00



find / -name'httpdocs'非常感謝 - Edward Tanguay
對於簡單的搜索可能無關緊要,但對於更複雜的查找命令,值得注意的是,事物按照它們在命令行上的順序進行評估。因此,您可能希望在-name之前使用-type d(僅限目錄),以加快速度。同樣,這在這裡可能並不重要,但是當進入更複雜的搜索時,它可以顯著提高搜索速度。 - Dominic Eidson
實際上, -name 測試比大多數其他測試更快 -name 與目錄的列表匹配,該列表已從磁盤加載,其他測試需要執行 stat(2) 獲取文件信息。第一次之後 stat() 調用文件,後續測試從內存中獲取,例如: -type f -mtime -10。 - Arcege
如果要對整個文件系統(尤其是服務器)執行查找,那麼通常很好用 nice所以find不會從更關鍵的進程中獲取太多資源: nice find / ... - Arcege
我會追加2> / dev / null以避免我的搜索結果隱藏在所有權限錯誤中。 - Jason Yeo


這個命令可以幫到你找到你想要的東西:

find / -type d -name httpdocs

這將從服務器的根目錄搜索名稱為httpdocs的目錄,或者如果您只想從當前目錄中搜索,則將'/'替換為'。'

你可以嘗試的另一個命令是找到你會做的事情:

locate httpdocs

61
2018-06-28 18:00



找到httpdocs告訴我“locate:command not found” - Edward Tanguay
對於使用“locate”命令的人(假設它存在於您的系統中),請確保它查找的數據庫是最新的;通常一些cron工作會照顧它。否則,運行“updatedb”(作為root)。然後運行您需要的“locate <somefile>”。這對於查找最近添加的文件/目錄是必要的。 - David Ramirez
+1代表定位。它的 很多 更快,但只有當它的索引是最新的。幸運的是,像“httpdocs”這樣的東西不會經常改變位置。如果您計劃在計算機上反复搜索文件,那麼設置updatedb cron作業需要幾分鐘的時間。 - Doug Harris
此外,在許多情況下,由於該目錄中的所有100k文件都將顯示,因此locate將返回太多結果。在這種特殊情況下,如果每個用戶都擁有自己的帶有100或1000個文件的httpdoc,那麼OP想要的結果可能會丟失。 - Jistanidiot
找到+1 ...我保持我的數據庫更新,所以這個命令非常有用......好主意。 - nicorellius


find / -type d -name httpdocs 2> /dev/null

這將消除您不以root用戶身份執行此操作時可能(讀取,始終)獲取的所有錯誤消息。建議這樣做。


26
2017-11-08 01:04



該 2> /dev/null 選項非常有用。否則很難看到想要的結果...... - Gottlieb Notschnabel
也可以看看 如何從“查找”中排除所有“權限被拒絕”的消息? - galath


重要的是要知道參數-iname以搜索“不區分大小寫”的模式以及使用通配符:* ,?等。

兩個例子:

從/ root搜索包含字符串“Linux”的所有文件,不區分大小寫:

find  /root -type f -iname "*linux*"

搜索/ root中包含字符串“Linux”的所有目錄,不區分大小寫:

find  /root -type d -iname "*linux*"

從這裡提取:

http://www.sysadmit.com/2015/12/linux-buscar-ficheros-directorios-con-find.html


11
2017-12-06 23:50



這個問題是關於如何查找您知道其名稱的目錄,而不是如何找到您知道其名稱的目錄(大約)。此外,已接受的答案(來自6年多以前!)已經提到過 -iname 作為一個不區分大小寫的替代品 -name。 - G-Man


你幾乎擁有它。正確的語法是:

find / -type d -name httpdocs

目錄可能在 /var/www/


9
2018-06-28 18:02



告訴我“路徑必須先於表達” - Edward Tanguay