在Unix中捕获变量中的命令行输出

时间:2013-12-09 05:51:18

标签: linux bash unix

我想在变量中捕获下面命令的输出。

命令:

find . -iname 'FIL*'.TXT

输出结果为:

./FILE1.TXT

我想将'./FILE1.TXT'捕获到'A'变量中。但是当我尝试时

A=`find . -iname 'FIL*'.TXT`

然后该命令显示文件的数据。但我想在变量A中使用./FILE1.TXT值。

3 个答案:

答案 0 :(得分:1)

# ls *.txt
test1.txt  test.txt
# find ./ -maxdepth 1 -iname "*.txt"
./test1.txt
./test.txt
# A=$(find ./ -maxdepth 1 -iname "*.txt")
# echo $A
./test1.txt ./test.txt

如果您愿意,可以忽略-maxdepth 1。我不得不在这个例子中使用它。

或使用单个文件:

# ls *.txt
test.txt
# find ./ -maxdepth 1 -iname "*.txt"
./test.txt
# A=$(find ./ -maxdepth 1 -iname "*.txt")
# echo $A
./test.txt

答案 1 :(得分:1)

你试试吗?

A="`find . -iname 'FIL*'.TXT`"

A="`find . -iname 'FIL*'.TXT -print`"

答案 2 :(得分:0)

文件没有任何值,但确实有内容。使用以下内容显示该内容。

  find . -iname 'FIL*'.TXT -exec cat {} \;

如果你想要一个变量中的所有内容(所有这些文件),那么

  A=$(find . -iname 'FIL*'.TXT -exec cat {} \;)

BTW你可以用

  find . -iname 'FIL*.TXT' -print0 | xargs -0 cat 

如果您想在变量中输入此类文件的名称,请尝试

  A=$(find . -iname 'FILE*.txt' -print)

顺便说一句,在一些最近几个交互式shell(zshbash version 4但不是早期版本)上写一下

  A=**/FILE*.txt

我的感觉是**功能本身值得转换为更新的外壳,但这只是我的看法。

另外,不要忘记文件可能有多个名称或没有名称。阅读inodes ...