捕获查找的输出。-print0进入bash数组
使用find . -print0
似乎是获取bash中文件列表的唯一安全方法,因为文件名可能包含空格,换行符,引号等。
但是,我很难让find的输出在bash或其他命令行实用程序中有用。我设法使用输出的唯一方法是将它传递给perl,并将perl的IFS更改为null:
find . -print0 | perl -e '$/="\0"; @files=<>; print $#files;'
此示例打印找到的文件数,避免文件名中的换行符损坏计数的危险,如下所示:
find . | wc -l
由于大多数命令行程序不支持空分隔输入,我认为最好的方法是捕获find . -print0
bash数组中的输出,就像我在上面的perl片段中所做的那样,然后继续执行任务,无论它是什么是。
我怎样才能做到这一点?
这不起作用:
find . -print0 | ( IFS=$'\0' ; array=( $( cat ) ) ; echo ${#array[@]} )
一个更普遍的问题可能是:如何用bash中的文件列表做有用的事情?
繁华开满天机
一只甜甜圈
开心每一天1111