簡體   English   中英

如何在Unix find命令的path參數中使用變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM