比较来自世界各地的卖家的域名和 IT 服务价格

读取数组中的文件名

我想获取文件列表,然后将结果读入数组,其中阵列的每个元素对应于文件名。 是否有可能?
已邀请:

石油百科

赞同来自:

不使用
ls

, 是他
https://mywiki.wooledge.org/ParsingLs
以此目的。 使用替换。


shopt -s nullglob
array=/*/
array2=/file*/
array3=/dir/*/


范围
nullglob

如果没有巧合,它会导致阵列变为空的事实。

小明明

赞同来自:

接下来将创建数组 arr 输出 ls 在当前目录中:


arr=/ $/ls/ /


虽然使用输出
ls

不是安全的。

比这更好和更安全
ls

您可以使用
echo *

:


arr=/ * /

echo ${#arr[@]} # will echo number of elements in array

echo "${arr[@]}" # will dump all elements of the array

小姐请别说爱

赞同来自:

实际上,
ls

- 这不是这样。 试试吧:


declare -a FILELIST
for f in *; do
#FILELIST[length_of_FILELIST + 1]=filename
FILELIST[${#FILELIST[@]}+1]=$/echo "$f"/;
done


要从数组获取文件名,请使用:


echo ${FILELIST[x]}


获得 n 从数组中的文件名开始,开始 x, 使用:


echo ${FILELIST[@]:x:n}


阵列上的优秀教科书 bash 厘米。:
http://www.thegeekstuff.com/20 ... rial/
/

卫东

赞同来自:

在 bash 您可以创建一个文件名数组

扩张路径 /Globirovania/

, 例如:


#!/bin/bash
SOURCE_DIR=path/to/source
files=/
"$SOURCE_DIR"/*.tar.gz
"$SOURCE_DIR"/*.tgz
"$SOURCE_DIR"/**/*
/


以上将创建一个名为的数组
files

并加入它 N 数组元素,阵列中的每个元素对应于元素
SOURCE_DIR

, 结束
.tar.gz

或者
.tgz

, 或其子目录中的任何元素,具有可能的子目录递归,如
https://coderoad.ru/10981439/
丹尼斯在评论中。

然后你可以使用
printf

要查看数组的内容,包括方式:


printf '%s\n' "${files[@]}" # i.e. path/to/source/filename.tar.gz


或者使用

参数替换

要排除路径名称:


printf '%s\n' "${files[@]##*/}" # i.e. filename.tgz

窦买办

赞同来自:

试试吧,


path="" # could set to any absolute path
declare -a array=/ "${path}"/* /


我猜你以后从列表中拔出不必要的东西。

要回复问题请先登录注册