Arrays 从目录中获取所有文件并将它们放入数组中

Arrays 从目录中获取所有文件并将它们放入数组中,arrays,linux,bash,unix,Arrays,Linux,Bash,Unix,我有一个任务,我正在工作,但我有一个问题,让它开始。下面是一些作业文本,可以帮助我找到正确的方向 我的主要问题是将文件列表放入数组中。我想如果我能做到这一点,剩下的事情就容易多了。我可以将文件推送到作为参数传递的数组中,但我不知道如何从一个目录中获取所有文件,将每个文件分解到一个数组中 任何帮助都将不胜感激 感谢Benjamin W的评论: 只需使用files=(*) 或者,如果您想包含隐藏文件,并且不想在空文件夹中遇到麻烦,请使用此选项(感谢Fred的评论): #/bin/bash shopt

我有一个任务,我正在工作,但我有一个问题,让它开始。下面是一些作业文本,可以帮助我找到正确的方向

我的主要问题是将文件列表放入数组中。我想如果我能做到这一点,剩下的事情就容易多了。我可以将文件推送到作为参数传递的数组中,但我不知道如何从一个目录中获取所有文件,将每个文件分解到一个数组中

任何帮助都将不胜感激

感谢Benjamin W的评论: 只需使用
files=(*)

或者,如果您想包含隐藏文件,并且不想在空文件夹中遇到麻烦,请使用此选项(感谢Fred的评论):

#/bin/bash
shopt-s nullglob
arr=(/home/*)

对于((i=0;i此脚本检查是否为其提供了任何参数(
($#==0))
),如果没有,则使用
set--“$PWD”
将第一个位置参数设置为当前目录

之后,
for f
(在“$@”
中是f的
的缩写)循环遍历所有参数以进行处理

#!/bin/bash

(( $# == 0 )) && set -- "$PWD"
for f; do
    # Do something with f
done

为什么你需要从一个目录中获取所有文件?作业没有说明要这样做。这可能是因为我对问题的要求有错误的想法。我的解释是,他希望将文件放入他的目录中,并运行脚本将文件组织成不同的类型。这些类型可以是常规文件、符号链接、目录或other.我必须在这个脚本上执行其他命令,但我不想透露太多。有没有其他方法来解释这个任务?也许我遗漏了什么?你刚才所说的都不是你在问题中引用的作业的一部分。不是我的DV,但这是一种说
files=(*)的麻烦方式
当然可以,我只是不想偷你的解决方案。你需要
shopt-s nullglob dotlob
来(1)让扩展包含以点开头的文件和(2)如果没有匹配的文件,请避免全局扩展到
*
。谢谢Fred,我添加了您的建议。它说如果没有给出参数,则使用
,而不是当前目录中的所有(非隐藏)文件。@melpomene我将其解释为“所有
中的内容”…您认为它应该只是当前的工作目录吗?是的,因为它特别指“文件系统对象”(包括目录和其他内容),不仅仅是文件。啊,谢谢你的反馈。我想这会对我有很大帮助。代码很容易阅读,你给出了解释,对此我非常感谢。如果没有
shopt-s dotglob
,名称以点开头的文件将不予考虑(在任何特定情况下都可能需要,也可能不需要).是的…+1额外澄清。问题没有提到任何具体情况…只是删除了所有的点文件!
#!/bin/bash

shopt -s nullglob
arr=(/home/*)

for ((i=0; i<${#arr[@]}; i++)); do
    echo "${arr[$i]}"
done
#!/bin/bash

(( $# == 0 )) && set -- "$PWD"
for f; do
    # Do something with f
done