2015-07-22 9 views
0

Мне нужно оценить длину каждого имени файла в каталоге. Вот что я делаю:Замена двойного с одинарными кавычками

files=$(ls -Q) 
for file in $files; 
do 
    echo lenght: ${#file} 
done 

Но длина рассчитывается с использованием двойных кавычек (+2). Как я могу избежать этого?

+0

проверить [это] (http://mywiki.wooledge.org/BashPitfalls#for_i_in_.24.28ls_.2A.mp3.29), [и это] (http://unix.stackexchange.com/questions/128985/why-not-parse-ls) –

ответ

1

Не разобрать вывод ls, использовать маску и for:

for file in * ; do 
    echo "$file: ${#file}" 
done 
0

Вам не понадобится ls для этого, и вы испытываете некоторые, почему это dangerous/tricky разобрать выход логинсервера

вы могли бы просто сделать

for file in *; do 
    echo "length: ${#file}" 
done 
0

Зачем использовать флаг '-Q' тогда? Если вы оставите его, вы получите фактическую длину имени файла.

+0

Если имя файла не содержит пробела. – choroba

Смежные вопросы