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
答案 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)