arrays - 如何捕获 ls 或 find 命令的输出以将所有文件名存储在数组中?

标签 arrays bash find capture ls

需要一次一个地处理当前目录中的文件。我正在寻找一种方法来获取 lsfind 的输出并将结果值存储为数组的元素。这样我就可以根据需要操作数组元素。

最佳答案

要回答您的确切问题,请使用以下内容:

arr=( $(find /path/to/toplevel/dir -type f) )

例子

$ find . -type f
./test1.txt
./test2.txt
./test3.txt
$ arr=( $(find . -type f) )
$ echo ${#arr[@]}
3
$ echo ${arr[@]}
./test1.txt ./test2.txt ./test3.txt
$ echo ${arr[0]}
./test1.txt

但是,如果您只想一次处理一个文件,您可以使用 find-exec 选项(如果脚本比较简单),或者您可以像这样循环查找返回的内容:

while IFS= read -r -d $'\0' file; do
  # stuff with "$file" here
done < <(find /path/to/toplevel/dir -type f -print0)

关于arrays - 如何捕获 ls 或 find 命令的输出以将所有文件名存储在数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4678418/

相关文章:

java - 尝试将新对象添加到数组时出现空指针异常?

git - -bash : hooks/post-receive: Permission denied

php - MongoDB $或PHP中的查询

matlab - 查找矩阵的第一个非零列(矢量化版本)

Linux查找和删除文件但重定向要删除的文件名

python - 如何在 for 循环中添加不同大小的 numpy 数组条目(类似于 Matlab 的元胞数组)?

arrays - 根据函数删除 Julia 矩阵的行

java - Java 中的随机数生成

bash - 按行拆分文件并将第一个字符串保留为输出文件的标题

regex - 使用 sed 查找和替换?