您可以在 shell 中执行此操作...find 将为您提供递归到子目录中的所有文件的列表,从 dot 开始 - 当前目录:
find .
输出
./vips/libvips/tools/vipsedit.c
./vips/libvips/tools/vipsheader.c
./vips/libvips/tools/vipsprofile
./vips/libvips/tools/vipsthumbnail.c
./vips/libvips/vips-cpp.pc.in
./vips/libvips/vips.pc.in
./vips/libvips/vipsCC.pc.in
那么awk 可以告诉你长度:
find . | awk '{l=length($0);print length,$0}'
输出
33 ./vips/libvips/tools/vipsheader.c
32 ./vips/libvips/tools/vipsprofile
36 ./vips/libvips/tools/vipsthumbnail.c
29 ./vips/libvips/vips-cpp.pc.in
25 ./vips/libvips/vips.pc.in
27 ./vips/libvips/vipsCC.pc.in
或者,如果您只想要长度超过 32 的:
find . | awk '{l=length($0);if(length>32)print length,$0}'
输出
43 ./vips/libvips/tools/batch_image_convert.in
42 ./vips/libvips/tools/batch_rubber_sheet.in
37 ./vips/libvips/tools/light_correct.in
36 ./vips/libvips/tools/shrink_width.in
33 ./vips/libvips/tools/vipsheader.c
36 ./vips/libvips/tools/vipsthumbnail.c
或者你可以使用这个:
find . | awk '{base=$0;sub(/.*\//,"",base);x=length(base);if(x>42)print $0,x,base}'
awk 在 $0 中获取整行,然后将其复制到 base。然后它会剥离所有内容,直到最后一个斜线,并将其重新保存为base。然后它获取base 的长度,如果大于 42,则显示完整的原始名称、基本名称的长度和基本名称本身。