printf从bash中的目录数组中输出太多信息

时间:2015-04-16 08:36:19

标签: arrays bash find printf

以下代码搜索文件 update_csgo.txt 的目录,将其写入数组并打印数组:

#!/bin/bash

mapfile -t updates < <(find /home/tcagame/ -type f -name "update_csgo.txt")
printf  "'%s' \n"${updates[@]}""

以下是我得到的输出:

'/home/tcagame/8frag/6/update_csgo.txt' 
/home/tcagame/update_csgo.txt'/home/tcagame/user/3/update_csgo.txt' 
/home/tcagame/update_csgo.txt'/home/tcagame/user/5/update_csgo.txt' 
/home/tcagame/update_csgo.txt'/home/tcagame/user/4/update_csgo.txt' 
/home/tcagame/update_csgo.txt'/home/tcagame/user/7/update_csgo.txt' 
/home/tcagame/update_csgo.txt'/home/tcagame/user/8/update_csgo.txt' 
/home/tcagame/update_csgo.txt'/home/tcagame/user/2/update_csgo.txt' 
/home/tcagame/update_csgo.txt

/home/tcagame/update_csgo.txt 来自哪里?删除它的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

你有额外的报价:

printf  "'%s' \n"${updates[@]}""
                              ^^

删除它们使它工作(可选地,您总是可以引用变量本身来正确处理带空格的文件名):

printf  "'%s' \n" "${updates[@]}"