#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