Shell
find ~ 和 find * 之間的區別
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
是它本身,這就是列印的內容。