[英]Bash Script to load all files in a directory/sub-directories into a Array
我正在尝试编写一个脚本,该脚本会将带有路径的所有文件名加载到bash脚本中的数组中。
假设我想要/ home / documents /中的所有文件夹和子文件夹的文件,它将在末尾提供文件数组。
我当前的脚本非常基础,但是应该具有一些功能。
num_partitions=0
for file in /home/documents/*; do
date_partition[$num_partitions]=${file##*/}
((num_partitions++))
echo ${date_partition}
done
当前,它仅打印黑屏。 如何修复它以获得所需的功能并正确打印我们的图像?
我是Bash的新手,这实际上是我的第一个脚本。 请帮忙。
首先,通常,您不想解析ls的输出... http://mywiki.wooledge.org/ParsingLs
接下来,您的方法的逻辑没有错。 不过,有一种更简单的方法可以用来完成此任务!
ar=( $(find /home/documents/*) ); echo "${#ar[@]}"; echo "${ar[2]}"
分解我们有。
$( find /home/documents/* )
这是命令替换。 它捕获写入其中的命令的输出。 这样,您可以执行类似于output=$( find .)
,现在输出是一个包含find命令结果的变量。
接下来我们有
ar=()
()
创建一个数组。 现在,此数组的输入将成为find命令的输出。 因此,当我们将它们放在一起时,最终得到“从此find命令的输出创建一个数组”。
该命令的其余部分仅显示ar
实际上是一个数组。 我们先打印出数组的长度,然后打印出索引2处的值。
建议谷歌搜索是... bash中的命令替换。 用bash中的命令制作数组。 如何在bash中使用数组。
注意:请注意, $( )
中的命令可以包含|
其他命令,例如find . | tr -d "." | ./some_other_command
find . | tr -d "." | ./some_other_command
find . | tr -d "." | ./some_other_command
。 另外,我建议您阅读自“”以来的find手册页。 和“ ..”可能会出现在您现在编写的数组中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.