【问题标题】:Assign result of find command to a list variable in bash script [duplicate]将 find 命令的结果分配给 bash 脚本中的列表变量 [重复]
【发布时间】:2020-04-22 07:19:12
【问题描述】:

我有一个包含一组子目录的基本目录,其中一些目录包含扩展名为 jpg 的文件。我想将这些文件复制到另一个目录,这是我的目标。 我决定将 find 的值分配给一个列表变量,然后遍历列表并将源文件复制到目标位置。

mylist=$(find . -type f -name "*.png")

如您所知,mylist 变量将只有一个元素。它将是包含所有找到的不同文件的字符串,并且索引 0 内有很多文件。

我尝试使用以下方法将行分开到一个新数组上

while IFS= read -r line; do
    files+=( "$line" )
done <"$mylist"

但是这不起作用,只是转储了查找结果中的所有行。

我在 MacOS 中使用 bash 3.2。我想知道如何解析 $mylist 变量,以便我可以在每个索引中拥有另一个带有文件路径的变量。或者作为一种替代方法,在执行后立即将 find 命令的结果放入列表中

【问题讨论】:

    标签: linux bash


    【解决方案1】:

    如果保证文件名不包含空格,则以下内容足以将所有名称存储在数组变量中

    mylist=($(find . -type f -name "*.png"))
    

    然后您可以通过${mylist[0]}${mylist[1]}${mylist[2]} 等访问各个文件名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 2012-10-13
      相关资源
      最近更新 更多