Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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
Bash 回显特定模板中的文件名_Bash_Echo_Filenames - Fatal编程技术网

Bash 回显特定模板中的文件名

Bash 回显特定模板中的文件名,bash,echo,filenames,Bash,Echo,Filenames,我在一个文件夹中有多个以相同名称开头的文件,但也有其他文件。让我们假设他们从“情节”开始。我想在这样一个模板中回显名称 "plot-abc";"plot-dcb";"plot-asd";... 其余的名字没有顺序。我试过了 for file in /home/user/*; do echo '"' echo ${file##*/} echo '";' done 但这是把引号放在开头和结尾。并且无法消除不相关的文件 如果我们能找到解决办法,我将不胜感激 提前感谢。printf允许您

我在一个文件夹中有多个以相同名称开头的文件,但也有其他文件。让我们假设他们从“情节”开始。我想在这样一个模板中回显名称

"plot-abc";"plot-dcb";"plot-asd";...
其余的名字没有顺序。我试过了

for file in /home/user/*;
do
  echo '"'
  echo ${file##*/}
  echo '";'
done
但这是把引号放在开头和结尾。并且无法消除不相关的文件

如果我们能找到解决办法,我将不胜感激


提前感谢。

printf
允许您提供一个模板,根据需要重复多次以处理所有参数:

#!/usr/bin/env bash
#              ^^^^- important: not /bin/sh; bash is needed for array support

shopt -s nullglob                 ## if no files match the glob, return an empty list
files=( /home/user/plot-* )       ## store results in an array

# if that array is non-empty, then pass its contents as a list of arguments to printf
(( ${#files[@]} )) && { printf '"%s";' "${files[@]##*/}"; printf '\n'; }

printf
允许您提供一个模板,可以根据需要重复多次以处理所有参数:

#!/usr/bin/env bash
#              ^^^^- important: not /bin/sh; bash is needed for array support

shopt -s nullglob                 ## if no files match the glob, return an empty list
files=( /home/user/plot-* )       ## store results in an array

# if that array is non-empty, then pass its contents as a list of arguments to printf
(( ${#files[@]} )) && { printf '"%s";' "${files[@]##*/}"; printf '\n'; }

另一方面,它自己建议在开发新代码时使用
printf
;请参阅应用程序用法和基本原理部分。除此之外,它本身建议在开发新代码时使用
printf
;请参阅应用程序用法和基本原理部分。感谢您的帮助。这并没有改变什么。抱歉,我不太了解。
/home/user/*
只是因为您的引用错误,并且在剥离目录名后重新扩展了glob。。。因此,当给定一个无效的目录名时,它会在当前目录中扩展glob;files=(/home/user/plot-*“$sampleType”*);printf'文件是:%s\n'${files[@]}'。请注意,在shell中的赋值中,
=
周围不能有空格;应始终引用扩展;而且,
printf
数据和格式字符串应该彼此独立。顺便说一句,如果您进行搜索,您可以找到关于所有这些问题的现有知识库问题——例如,请参阅感谢您的帮助。这并没有改变什么。抱歉,我不太了解。
/home/user/*
只是因为您的引用错误,并且在剥离目录名后重新扩展了glob。。。因此,当给定一个无效的目录名时,它会在当前目录中扩展glob;files=(/home/user/plot-*“$sampleType”*);printf'文件是:%s\n'${files[@]}'。请注意,在shell中的赋值中,
=
周围不能有空格;应始终引用扩展;而且,
printf
数据和格式字符串应该彼此分开。顺便说一句,如果您进行搜索,您可能已经找到了关于所有这些问题的现有知识库问题——例如,请参见