【发布时间】:2016-11-07 23:56:52
【问题描述】:
我希望能够将目录的内容存储在数组中。我知道你可以使用:
#!/bin/bash
declare -A array
for i in Directory; do
array[$i]=$i
done
将目录内容存储在关联数组中。但是如果目录中有子目录,我希望能够将它们及其内容存储在同一个数组中。我也尝试过使用:
declare -A arr1
find Directory -print0 | while read -d $'\0' file; do
arr1[$file]=$file
echo "${arr1[$file]}"
done
但这只是遇到了这样的问题:一旦 while 循环结束,由于子shell 被从管道中丢弃(不确定我是否正确描述了这一点),数组内容就会消失。
我什至尝试了以下方法:
for i in $(find Directory/*); do
arr2[$i]="$i"
echo $i
done
但是对于包含任何空格的文件来说,输出是一场彻底的灾难。
如何将一个目录及其所有子目录(如果需要,还包括它们的子目录)存储在一个数组中?
【问题讨论】:
-
您可以考虑探索这篇文章 - stackoverflow.com/questions/11584029/…
-
您要归档什么?为什么需要使用数组?
-
@andlrc 我正在编写一个比较两个目录并搜索重复文件的脚本。该脚本将第一个目录的文件名存储在一个数组中,然后搜索第二个目录以查找文件的重复项。我认为数组将是存储和比较文件名以及文件校验和的好方法。我这样做是为了帮助自学 bash。