使用wc查找文件名的最长长度并分配变量

时间:2019-01-27 22:08:21

标签: bash unix

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仅读取名称,并对字符进行计数以找到名称的长度。但是,当我尝试在echo语句上使用wc -c时,它将给我块的字符数,而不是给我每个文件名的长度。

我希望是:

# 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 :(得分:1)

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}的bultin)