在 bash 中使用通配符移动和备份多个目录

move and backup multiple directories with wildcards in bash

目标是将多个目录(包括其内容)移动到另一个目录,同时进行并行备份。

Input="/home/input/folder*/"
Output="/home/output/"
Backup="/home/backup/"

for folder in "$Input" ; do
    cp -rp "$folder" "$Backup" || { echo 'error backup'; exit; }
    cp -rp "$folder" "$Output" || { echo 'error move'; exit; }
    rm -rf "$folder"
done

我收到以下错误消息:cp: cannot stat ‘/home/input/folder*/’: file or folder not found

两个问题:

将您的所有评论汇总为答案:

Input="/home/input/"folder*/
Output="/home/output/"
Backup="/home/backup/"

shopt -s nullglob

for folder in $Input ; do
    cp -rp "$folder" "$Backup" || { echo 'error backup'; exit; }
    cp -rp "$folder" "$Output" || { echo 'error move'; exit; }
    rm -rf "$folder"           || { echo 'error remove'; exit; }
done