Find

Unix Power Tools 中的奇怪別名“find . -name ‘!{}*’ -ls”

  • December 17, 2015

來自 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; }

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