Find
Unix Power Tools 中的奇怪別名“find . -name ‘!{}*’ -ls”
來自 Unix Power Tools 第 3 版第 175 頁:
第 9.27 條展示了一種在路徑中間匹配目錄的方法。這是一個更簡單的“查找文件”別名,它可以派上用場:
alias ff "find . -name '*\!{*}*' -ls"
給它一個文件或目錄名;別名將給出包含參數的任何文件或目錄名稱的長列表。
(這也可以線上獲得。)
我根本沒有得到
-name
運營商的論據。這是一個錯字嗎?它僅適用於特定版本find
嗎?反斜杠、大括號和花括號在做什麼?
那是
csh
別名;給定的參數-name
由 shell 解釋,而不是由find
. 如果我理解正確,\!{*}
則替換為給定的參數ff
(儘管通常只是\!*
)。確實很奇怪,這本書沒有指定外殼……基本上定義了別名,鍵入
ff test
執行
find . -name '*test*' -ls
(並且它不能優雅地處理多個參數)。
在本書的第二版中,文本以與問題中給出的相同方式定義別名,並指向隨附的 CD 上的
csh_init
和。sh_init
(這是第 17.04 節。)有趣的是,csh_init
在 CD 上並沒有定義別名,而是sh_init
定義了一個等效ff
函式:ff() { find . -name "*$1*" -ls; }