Нахождение самой длинной длины имени файла с помощью wc и присваивание переменной - PullRequest
0 голосов
/ 28 января 2019
cd subdir1/subdir2

ineedthis=$(find subdir3/ -name "*.csv" | tr ' ' '_') ## assigning name of the file into this variable
echo -n $ineedthis | wc -c

Я хотел увидеть длину всего имени файла, назначив переменную с именем ineedthis и внеся изменения, чтобы между именами не было пробелов.Затем я попытался использовать echo -n для чтения только имени и подсчета символов, чтобы найти длину имени.Однако, когда я пытаюсь использовать wc -c в операторе echo, он дает мне количество символов в чанке, а не длину каждого имени файла.

То, на что я надеялся, было:

# numbers indicating the length of filename

9 subdir3/saying/hello.csv
6 subdir3/saying/hi.csv
9 subdir3/nay/noway.csv
12 subdir3/nay/nomethod.csv
16 subdir3/nay/you_dont_say.csv

1 Ответ

0 голосов
/ 28 января 2019
find subdir3/ -name "*.csv" |\
while read path; do
    $file=$(basename "$path")
    $len=$(echo -n "$file" | wc -c) 
    echo $len "$path"
done
  • while зацикливается на каждом пути, найденном find
  • basename, удаляет все до конечного / (опционально суффикс также может быть удален. Bash предоставляеттакие же бултины, как ${path##*/} и ${path%%.csv}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...