2015-04-03 64 views
0

我爲的是能正常工作的命令:如何獲取文件路徑從變量名找到

fname=$(find $dir -name '*001.txt') 

我希望做的是一個變量替換數:

fname=$(find $dir -name '*$num.txt') 

但什麼都不收。我試過轉義單引號:\'*$num.txt\',用雙引號括起單引號:"'"*$num.txt"'",,但沒有任何效果。我需要什麼?

+0

的Shell變量不要用單引號擴大。 Globs不會擴展任何引號。您需要雙引號變量,而不是引用glob('*')。 – 2015-04-03 13:38:15

+0

因爲,賽勒斯正確地認識到,我沒有清楚地想到,glob不想被shell想擴展,所以你需要'find'來查看它的未擴展,所以請將'*'保留在雙引號中,如圖所示。但請注意,如果您想逐一使用它們,則這不是一種安全的方法來獲取多個文件名。爲此你需要一個'while'循環(更多細節見http://mywiki.wooledge.org/BashFAQ/001)。 – 2015-04-03 14:32:06

回答

0

試試這個:

fname=$(find $dir -name "*${num}.txt")