使用getopts查找文件并将其复制到目录

时间:2016-10-10 14:10:19

标签: bash

我有一个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个文件,任何见解都会受到赞赏!

1 个答案:

答案 0 :(得分:1)

您需要在cp命令的末尾添加-r。这将在目录上执行递归文件复制。

find . -name "$OPTARG" -type f -exec cp -r {} $dest \; 2>1