Приводимые ниже код выполняет поиск каталогов, которые имеют файл update_csgo.txt в, записывает его в массив и выводит массив:PRINTF печатает слишком много информации из массива каталогов в Баш
#!/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 взялось? Какой был бы лучший способ удалить это?
Помните это поведение. Цитированные переменные массива 'printf' будут работать по назначению. Однако 'printf '% s \ n" $ {updates [@]} 'также стоит запомнить, так как это гладкий способ распечатать все значения в массиве, соответствующие вашей строке формата, без необходимости цикла. –