Shell

find ~ 和 find * 之間的區別

  • June 17, 2015

find *搜尋文件和find ~搜尋文件有什麼區別 ?在終端中,當我目前的工作目錄打開時root,然後在終端中

root@devils-ey3:~# find * -print -quit
~

在同一個目錄

root@devils-ey3:~# find ~ -print -quit
/root

但是如果我改變了,pwd那麼輸出find ~ -print -quit和以前一樣,但另一個是改變。查找文件的工作目的*和用途是什麼?~

的基本格式find

find WHERE WHAT

因此,在 中find **被視為WHERE。現在,*是萬用字元。它匹配目前目錄中的所有內容(預設情況下,以 a 開頭的文件/目錄除外.)。Windows 等效項是*.*. 這意味著*傳遞find. 為了說明,考慮這個目錄:

$ ls
file  file2

如果我們執行set -x以啟用調試資訊,然後執行您的find命令,我們會看到:

$ find * -print -quit
+ find file file2 -print -quit
file

正如您在上面看到的,*擴展為目錄中的所有文件,實際執行的是

find file file2 -print -quit

因為-quit,這會列印您告訴它查找並退出的文件的第一個文件名。在您的情況下,您似乎有一個名為的文件或目錄~,因此這是列印的文件或目錄。

但是,波浪號 ( ~) 也有特殊含義。它是您$HOME目錄的快捷方式:

$ echo ~
/home/terdon

因此,當您find ~以 root 身份執行時,將~擴展為/home/root並且您執行的命令實際上是:

# find ~ -print -quit
+ find /root -print -quit
/root

同樣,您要find在特定位置搜尋文件或目錄並在列印第一個後退出。由於第一個文件或目錄匹配/root是它本身,這就是列印的內容。

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