Linux- 转换 find 命令的返回值为 shell array

简介: 本文示例了如何在Linux系统下转换 find 命令的返回值为一个 shell array

在shell脚本中,find命令用于搜索给定目录下符合搜索条件的的文件或子目录,如命令var=$(find "$PWD" -name "*.tsv")表示搜索当前目录下的所有tsv文件。

find 命令的返回结果需要注意,它的直接返回结果不是一个标准的 shell array 数据结构,而是一个 shell variable,如果尝试通过索引号进行取值,0 索引的结果并不是返回所有结果的第一个元素,反而是输出全部返回结果,但是 0 索引之后的元素可以正常索引。如下所示 :

>ls -R
total 0
0 -rw-r--r-- 1 Nh_code GROUP 0 Jun 21 17:22 5.tsv
0 -rw-r--r-- 1 Nh_code GROUP 0 Jun 21 17:22 4.tsv
0 -rw-r--r-- 1 Nh_code GROUP 0 Jun 21 17:22 3.tsv
0 -rw-r--r-- 1 Nh_code GROUP 0 Jun 21 17:22 2.tsv

### 对find 命令的返回结果 var 尝试索引取值, ${var[0]} 的结果不是第一个元素,而是打印出find命令的全部返回结果
>var=$(find .  -name "*.tsv" ) ; echo ${var[0]}
./4.tsv ./1.tsv ./3.tsv ./5.tsv ./2.tsv
### 但是除了第一个元素,其余元素都能通过索引号取值
>var=$(find .  -name "*.tsv" ) ; echo ${var[1]}
./1.tsv

取值方法1-遍历

虽然无法通过索引号索引数组元素的方式取find命令的返回值元素,但find命令的返回结果是可以通过for循环进行遍历的。

$for i in $(find . -name "*.tsv") ; do echo ${i} ; done
./4.tsv
./1.tsv
./3.tsv
./5.tsv
./2.tsv

取值方法2-转换成ARRAY

find命令的返回结果可以通过在命令外围套一组括号来转换成shell array数据结构,var_array=( `find . -name "*.tsv"` ),这样find命令的返回结果就是一个标准shell array了。

$var_array=(`find .  -name "*.tsv"`);echo ${var_array[0]}
./4.tsv
$var_array=(`find .  -name "*.tsv"`);echo ${var_array[1]}
./1.tsv

Reference

How can I store the "find" command results as an array in Bash - Stack Overflow

目录
相关文章
|
7天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
32 6
|
5天前
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
14 1
|
1月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
62 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
1月前
|
Shell 知识图谱
Shell printf 命令
10月更文挑战第3天
19 1
|
1月前
|
Shell PHP
Shell echo命令
10月更文挑战第3天
20 0
|
1月前
|
JSON Java Shell
Dockerfile中RUN、CMD、ENTRYPOINT、SHELL命令的区别
理解这些指令的差异和应用场景,有助于构建高效、灵活且易于管理的Docker镜像。在实际应用中,根据需要选择合适的指令,可以有效地控制镜像构建和容器运行的行为。
144 0
|
1月前
|
SQL Shell 数据库
在TDengine容器中创建初始化数据库的Shell命令实例
以上就是在Docker容器环境中部署并初始化TDengine数据库的全过程,希望对你有所帮助。
64 0
|
4天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
21 3
|
4天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
16 2
|
12天前
|
缓存 监控 Linux