Find

如何為查找的表達式的一部分加上別名?

  • August 3, 2015

-regex我更喜歡帶有shell 模式語法的正則表達式-name。我也想使用這種posix-egrep類型,所以我想做類似的事情

alias find="find -regextype posix-egrep"

但這是一個錯誤,因為路徑必須在表達式之前。但是,-regextype必須在表達式中排在第一位(或在使用-regexor之前-iregex)。

我只想使用別名或擁有一個 shell 函式find,以便它像往常一樣工作,posix-regex只要我決定使用-regexor-iregex選項就可以使用。

我怎樣才能做到這一點?

因為find參數是位置的,所以函式將是一個更好的解決方案。

find(){
 command find "$1" -regextype posix-egrep "${@:2}"
}

因為你想“覆蓋”你需要使用完整路徑的原始命令,find這樣你的新函式就不會創建一個無限循環的呼叫自身。

通過使用函式而不是別名,我們可以使用位置參數變數 ( $1-$n)。因為您可能還想在您的末尾添加其他內容,所以find我們附加命令,該命令${@:2}使用數組切片附加除第一個參數(您的路徑)之外的所有參數。

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