相关疑难解决方法(0)

捕获查找的输出.-print0进入bash数组

使用find . -print0似乎是获取bash中文件列表的唯一安全方法,因为文件名可能包含空格,换行符,引号等.

但是,我很难让find的输出在bash或其他命令行实用程序中有用.我设法使用输出的唯一方法是将它传递给perl,并将perl的IFS更改为null:

find . -print0 | perl -e '$/="\0"; @files=<>; print $#files;'
Run Code Online (Sandbox Code Playgroud)

此示例打印找到的文件数,避免文件名中的换行符损坏计数的危险,如下所示:

find . | wc -l
Run Code Online (Sandbox Code Playgroud)

由于大多数命令行程序不支持空分隔输入,我认为最好的方法是捕获find . -print0bash数组中的输出,就像我在上面的perl片段中所做的那样,然后继续执行任务,无论它是什么是.

我怎样才能做到这一点?

这不起作用:

find . -print0 | ( IFS=$'\0' ; array=( $( cat ) ) ; echo ${#array[@]} )
Run Code Online (Sandbox Code Playgroud)

一个更普遍的问题可能是:如何用bash中的文件列表做有用的事情?

arrays bash null find delimiter

73
推荐指数
4
解决办法
5万
查看次数

标签 统计

arrays ×1

bash ×1

delimiter ×1

find ×1

null ×1