В вашем коде list
- это список длин файлов, а не имен файлов. Так что $ file это просто число. Вы также пропустили ведущий $
на $file
.
Вам не нужно использовать программу wc
, вы можете получить длину имени переменной, используя ${#name}
. Я думаю, вам нужно что-то вроде этого:
while [[ $number != +([0-9]) ]]
do
read -p "Enter number: " number
done
for file in *
do
if (( ${#file} == $number ))
then
cp "$file" dir2
fi
done