美文网首页
Linux 转换 find 命令的返回结果为 shell arr

Linux 转换 find 命令的返回结果为 shell arr

作者: 倪桦 | 来源:发表于2022-06-21 17:56 被阅读0次

在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

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

相关文章

  • Linux 转换 find 命令的返回结果为 shell arr

    在shell脚本中,find命令用于搜索给定目录下符合搜索条件的的文件或子目录,如命令var=$(find "$P...

  • 第十章 Shell基础(bash,输入输出重定向,多命令执行,管

    10.1 Shell概述 1、 Shell是什么 (通俗的讲,就是把命令转换为内核可以识别的机器语言,同时返回结果...

  • shell的&&和||

    Linux shell的&&和|| shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell...

  • 操作系统常用命令

    linux shell 命令 df - lh 查看磁盘使用率 dir 查看目录 clear 清屏 find...

  • Linux下的shell

    Shell 和 Linux shell程序是包含若干行shell或linux命令的文件。linux命令语句只能一行...

  • linux编写脚本指南

    linux命令作为返回值用反引号包裹的字符串,当作命令执行返回 当然也可以用$?获取返回值 shell解析json...

  • 转录组分析前准备

    小知识 1、Linux中的find命令:基本格式为find path -optionfind path -name...

  • 2.4 文件查找与文件列表

    《Linux Shell 脚本攻略(第 2 版)》读书笔记 find 命令工作方式:沿着文件层次结构向下遍历,匹配...

  • Shell命令和Linux命令

    Shell命令和Linux命令 Shell shell是c语言编写的程序,是用户使用linux的桥梁。即是一种命令...

  • 01初识Linux

    与Linux进行交互 通过shell给Linux下达命令:在提示符后输入命令再回车,就会执行命令,并在终端输出结果...

网友评论

      本文标题:Linux 转换 find 命令的返回结果为 shell arr

      本文链接:https://www.haomeiwen.com/subject/eksevrtx.html