我有一个bash脚本需要传递要复制的文件(*.cpp
)和要复制到的目录(cfiles/backup
)。问题是它只复制第一个文件而不是目录中的所有文件。
#!/bin/bash
while getopts "ab:" input; do
case $input in
a)
#an option
;;
b)
# Get the wild card and destination passed in
# wildcard=$OPTARG
dest="${@: -1}"
#Make the directory if it doesn't exit
mkdir -p $dest 2>1
find . -name "$OPTARG" -type f -exec cp {} $dest \; 2>1
printf 'string = %b| destination = %b\n' $OPTARG $dest
;;
?)
echo "Error! Invalid option provided" >&2
exit 1
;;
:)
echo "Option -$OPTARG missing parameter!" >&2
;;
esac
done
问题是它只会复制1个文件,任何见解都会受到赞赏!
答案 0 :(得分:1)
您需要在cp命令的末尾添加-r。这将在目录上执行递归文件复制。
find . -name "$OPTARG" -type f -exec cp -r {} $dest \; 2>1