schrodingerscatcuriosity Asked: 2020-03-10 06:22:01 +0800 CST2020-03-10 06:22:01 +0800 CST 2020-03-10 06:22:01 +0800 CST 从 find 命令引用 bash for 循环中的项目 772 假设我有这个代码: for i in $(find * -type f -name "*.txt"); do # echo [element by it's index] done 如果可能,我如何通过索引访问元素? bash find 1 个回答 Voted Best Answer AdminBee 2020-03-10T06:28:37+08:002020-03-10T06:28:37+08:00 你的命令 $(find * -type f -name "*.txt") 将返回一个(空格分隔的)bash 列表,而不是一个数组,因此您不能真正以“有针对性”的方式访问各个元素。 要将其转换为 bash 数组,请使用 filearray=( $(find * -type f -name "*.txt") ) (注意空格!) 然后,您可以访问各个条目,如 for ((i=0; i<n; i++)) do file="${filarray[$i]}" <whatever operation on the file> done 可以通过以下方式检索条目数 n="${#filearray[@]}" 但是请注意,这仅在您的文件名不包含特殊字符(特别是空格)时才有效,因此再次解析lsor的输出find不推荐。就您而言,我建议您查看-exec选项是否find可以完成您需要完成的工作。
你的命令
将返回一个(空格分隔的)bash 列表,而不是一个数组,因此您不能真正以“有针对性”的方式访问各个元素。
要将其转换为 bash 数组,请使用
(注意空格!)
然后,您可以访问各个条目,如
可以通过以下方式检索条目数
但是请注意,这仅在您的文件名不包含特殊字符(特别是空格)时才有效,因此再次解析
ls
or的输出find
不推荐。就您而言,我建议您查看-exec
选项是否find
可以完成您需要完成的工作。