在脚本中复制某些文件类型扩展名的所有文件

在脚本中复制某些文件类型扩展名的所有文件

我正在尝试在 shell 脚本中执行以下命令,adir="mydir"其中extType=*.txt

cp "$adir/$extType" "$destination"

但是我得到:

cp: cannot stat ‘mydir/*.txt’: No such file or directory

但是有这样的目录,如果我在命令行中手动执行它,它就可以工作。

知道哪里出了问题吗?

答案1

您应该更改"$adir/$extType"为,"$adir/"$extType否则不会进行全局扩展,并且它会查找一个*.txt无法找到的名称的文件,因此它会对此抱怨:

cp: cannot stat ‘mydir/*.txt’: No such file or directory

答案2

Ravexina 已经很好地指出了通配符在双引号或单引号中不起作用,并且 cp 语法对于多个文件/单个目的地是错误的,需要 -t 标志。

你也可以使用 bash 数组:

extType=( "$adir"/*.txt )
cp -t "$destination"   "${extType[@]}" 

或者,循环

for i in "$adir"/*.txt ; do cp "$i"  "$destination"; done

相关内容