Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将所有文件名(不带扩展名)写入Ubuntu终端的数组中_Arrays_Linux_Sed_Terminal_Filenames - Fatal编程技术网

Arrays 将所有文件名(不带扩展名)写入Ubuntu终端的数组中

Arrays 将所有文件名(不带扩展名)写入Ubuntu终端的数组中,arrays,linux,sed,terminal,filenames,Arrays,Linux,Sed,Terminal,Filenames,我想从当前目录中提取具有一个特定扩展名(.com)但没有扩展名的所有文件的名称,并将其存储在数组中 这就是我所尝试的: test=$((*.com) | sed 's/.com//g') 我得到了错误 zsh:权限被拒绝:1butene.com 1butene.com是我的一个文件 谢谢你的帮助 您当前正在存储一组名称,然后通过管道传输到sed。当glob展开时,这将成为表单上的命令: 1butene.com xxxx | sed 's/.com//g' 这显然是不允许的,因为1butene

我想从当前目录中提取具有一个特定扩展名(.com)但没有扩展名的所有文件的名称,并将其存储在数组中

这就是我所尝试的:

test=$((*.com) | sed 's/.com//g')
我得到了错误

zsh:权限被拒绝:1butene.com

1butene.com是我的一个文件


谢谢你的帮助

您当前正在存储一组名称,然后通过管道传输到
sed
。当glob展开时,这将成为表单上的命令:

1butene.com xxxx | sed 's/.com//g'
这显然是不允许的,因为
1butene.com
本身不是命令


你要做的就是

1) 存储数据,
2) 进行清洁

为此,我们有好消息!你可以表演

通过这种方式,您可以将数据存储在阵列中:

names=(*.com)
然后,通过以下方式对所有部件进行更换:

printf "%s\n" "${names[@]%.*}"
如果需要,只需使用语法即可

new_array=("${names[@]%.*}")

样本:

$ touch a{1..3}.{sql,com}
$ com_names=(*com)
$ printf "%s\n" "${com_names[@]}"
a1.com
a2.com
a3.com
$ printf "%s\n" "${com_names[@]%.*}"
a1
a2
a3
b=("${com_names[@]%.*}")         # assign to a new array
$ printf "%s\n" "${b[@]}"
a1
a2
a3

您当前正在存储一组名称,然后通过管道传输到
sed
。当glob展开时,这将成为表单上的命令:

1butene.com xxxx | sed 's/.com//g'
这显然是不允许的,因为
1butene.com
本身不是命令


你要做的就是

1) 存储数据,
2) 进行清洁

为此,我们有好消息!你可以表演

通过这种方式,您可以将数据存储在阵列中:

names=(*.com)
然后,通过以下方式对所有部件进行更换:

printf "%s\n" "${names[@]%.*}"
如果需要,只需使用语法即可

new_array=("${names[@]%.*}")

样本:

$ touch a{1..3}.{sql,com}
$ com_names=(*com)
$ printf "%s\n" "${com_names[@]}"
a1.com
a2.com
a3.com
$ printf "%s\n" "${com_names[@]%.*}"
a1
a2
a3
b=("${com_names[@]%.*}")         # assign to a new array
$ printf "%s\n" "${b[@]}"
a1
a2
a3

好吧,这似乎在某种程度上起了作用。但是如何将这些名称存储在数组中?如果我执行test=(*.com),然后执行test=${“%\n”“${names[@]]].}”}$test,则为empty@user7408924请参阅示例部分之前我解释的最后一部分:
var=(“${…[@]].*}”)
。另外,不要对变量使用名称
test
,因为它本身就是一个命令!好吧,这似乎在某种程度上起了作用。但是如何将这些名称存储在数组中?如果我执行test=(*.com),然后执行test=${“%\n”“${names[@]]].}”}$test,则为empty@user7408924请参阅示例部分之前我解释的最后一部分:
var=(“${…[@]].*}”)
。另外,不要对变量使用名称
test
,因为它本身就是一个命令!