如何解决在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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。