Bash

Bash 函式不能遞歸工作

  • August 25, 2018

目錄結構:

one.pdf

./subdir/two.pdf

./anothersubdir/three.pdf

當我輸入:

find ./ -type f -name "*.pdf"    

它檢索所有 pdf,包括子目錄。

重擊函式

function getext {find ./ -type f -name "$1"}

在 bashrc 中使用這個函式,輸入:

getext *.pdf

它只檢索“one.pdf”,但不檢索其餘部分。

問題:函式在這裡發生了什麼?與僅獲取第一個文件並停止的標準輸入相比,它缺少什麼?

感謝您的幫助。

出於在函式內部"*.pdf"引用參數的相同原因,您需要在呼叫函式時引用它:find

getext "*.pdf"

否則,shell 將嘗試匹配*.pdf目前目錄中的文件名,從而在傳遞給您的函式之前one.pdf將其擴展-在本例中為擴展。

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