我想在变量中捕获下面命令的输出。
命令:
find . -iname 'FIL*'.TXT
输出结果为:
./FILE1.TXT
我想将'./FILE1.TXT'捕获到'A'变量中。但是当我尝试时
A=`find . -iname 'FIL*'.TXT`
然后该命令显示文件的数据。但我想在变量A中使用./FILE1.TXT
值。
答案 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(zsh
,bash
version 4但不是早期版本)上写一下
A=**/FILE*.txt
我的感觉是**
功能本身值得转换为更新的外壳,但这只是我的看法。
另外,不要忘记文件可能有多个名称或没有名称。阅读inodes ...