使用grep,ls来获取bash中的文件

时间:2012-07-11 02:13:11

标签: bash unix grep

我正在尝试编写一个bash脚本,它可以在当前目录中找到一个文件。该文件将在稍后使用,但我不需要那里的帮助。我尝试使用ls和grep,但它不起作用,我是一个使用bash的新手。

#!/bin/sh
#Here I need smt like
#trFile = ls | grep myString (but I get file not found error)
echo $trFile

5 个答案:

答案 0 :(得分:1)

使用shell通配符,如

ls *${pattern}*

并且,要将结果存储在变量中,请将其放在$()结构中(如果您喜欢使用不能很好地嵌套的弃用功能,也可以使用弃用的反引号)

var=$( ls *${pattern}* )

或者,把你的ls | grep在那里(但这是不好的做法,恕我直言):

var=$( ls | grep -- "$pattern" )

答案 1 :(得分:0)

我相信你正在寻找这样的东西:

    #!/bin/sh
    trFile=`ls | grep "$myString"`

为了运行命令并重定向/存储其输出,您需要将命令放在反引号之间。存储输出,等号和反引号的变量需要在一起,如我的例子中所示。 希望这会有所帮助。

答案 2 :(得分:0)

#!/bin/sh
#
trfile=$( ls | grep myString )
echo $trfile

$(xxx)导致执行命令并返回输出。

答案 3 :(得分:0)

试试这个,如果我猜你要做的是,通过grep的输出将ls ping的文件名捕获到shell变量中,试试这个:< / p>

#!/bin/sh

trFile=`ls | grep "name_of_file"`
echo $trFile

请注意命令周围的反向操作符的使用,在这种情况下,输出将被捕获。

答案 4 :(得分:0)

使用ls的输出会在你最不期望的时候咬人。更好地使用Globbing。 http://tldp.org/LDP/abs/html/globbingref.html