Проблема с количеством строк в цикле

#shell #loops #for-loop

Вопрос:

У меня есть сценарий, как показано ниже.

 mount=/transfer/input
rm src/cb.log
array=( $(find ${mount}  -type f ( -name "Turbine_DATA*" -o -name "GT_Data*"  -o -name "INSIGHTS_data*" ) -printf '%fn' ))
for i in "${array[@]}";do
        echo $i >>src/cb.log

Filecount=`find ${mount} -maxdepth 1 -type f -name "$i" | wc -l`
echo $Filecount>> src/cb.log;
done
 

Я столкнулся с проблемой ниже.
Хотя файл Turbine_DATA содержит 3 строки данных, но счетчик файлов по-прежнему отображается как 1. Я могу выполнить wc-l для этого файла в каталоге /transfer/input, в котором присутствует файл, и я вижу там количество 3.

Здесь следует отметить, что я запускаю скрипт из каталога /NAS/Files. В этом ли здесь проблема?

Ответ №1:

Количество файлов-это количество файлов, а не общее количество строк в этих файлах. Вот почему он называется «Количество файлов«, а не «Количество строк«. Он подсчитывает количество файлов с заданным именем (я предполагаю, что в разных подкаталогах может быть несколько файлов с одинаковым именем).

Однако для правильного понимания вам, вероятно, следует проконсультироваться с автором этого скрипта — неясно, какую информацию он должен записывать в cb.log.

Комментарии:

1. Возможно, я пьян, чтобы не понимать этого :D.. Спасибо @Hans-Martin Mosner. Я думаю, что я действительно перепутал с туалетом-l