[英]How can you use variable for the path argument for the Unix find command?
Unix命令查找未完成我想做的事情。 這是情況
如果輸入: find ../tmp -name "\\*tmp\\*"
它會正確輸出tmp文件夾中名稱中包含“ tmp”的文件
但是當我鍵入:
dir=../tmp #assign ../tmp as a variable named dir
find ${dir} -name "\*tmp\*"
輸出顯示:沒有這樣的文件或目錄
我的猜測是find命令假定變量“ dir”為要查找的文件? 我該如何解決這個問題? 我想知道的原因是,我可以將路徑作為腳本的參數傳遞。 謝謝
-----------附加評論
我使用bash外殼。 對困惑感到抱歉。 上面的代碼有效。 真正的問題是當我在變量中包含{}結構時。 例如,當我鍵入
dir = .. / {tmp1,tmp3} #assign ../{tmp1,tmp3}作為名為dir的變量
找到$ {dir} -name“ * tmp *”
輸出顯示:沒有這樣的文件或目錄,為什么???
首先以命令行方式評估命令行,然后執行任何操作(如設置環境變量,調用程序)。 因此,在評估命令行之前不會設置$ dir。 解決該問題的一種可能性是,將變量設置與其用法分開;
dir=../tmp ; find "$dir" -name "tmp"
或將命令寫成兩行(Thiruvalluvar的答案)。
dir=../tmp
find "$dir" -name "tmp"
這樣可以:
(從命令行)
# dir="../tmp/whatever/your/directory"
# find $dir -name "*tmp*"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.