一级目录
涉及到的知识点
-
find -print0
find -print0 意思是输出的每一行数据用 空字符 \0分割每一行 find -print 或者默认行为,用换行符\n分割每一行
关于空字符参考:空字符不是空
-
shell识别转义字符
意思是不输出表面的字符串样式,而是按照转义字符处理
- 在单引号字符串中,\n 会被当作普通字符
- 想要识别为换行符需要语法格式为: $‘ASCII转义字符’ ,例:$‘\n’, $'\t’等echo 'a\nb' 输出: a\nb echo $'a\nb' 输出: a b
-
read -d参数
read 命令用于从标准输入(stdin)读取一行数据,并根据定界符(delimiter)分割当前行数据,将分割后的数据赋值给一个或多个变量, 默认的界定符 \n, 可通过参数-d指定界定符。
代码
写法一
while read -d $'\n' -r jarfile ; do
echo "$jarfile"
done < <(find "/home/flink/flink-1.13.6/lib" ! -type d -name '*.jar' -print)
写法二:
while read -d $'\0' -r jarfile ; do
echo "$jarfile"
done < <(find "/home/flink/flink-1.13.6/lib" ! -type d -name '*.jar' -print0)
利用管道操作符实现上面的逻辑
推荐这种写法更好理解
find "/home/flink/flink-1.13.6/lib" -type f -name '*.jar' | while read -d $'\n' -r jarfile; do
echo "$jarfile"
done