我正在开发一个bash脚本,用于递归地从Time Machine备份中复制带日期的文件夹,然后进行重复数据消除。正如预期的那样,当在循环外部使用并且直接在终端中使用时(设置了-R和-L标志),cp(copy)命令会正确复制预期的“foldertocopy”,但当放置在脚本的循环中时,不会正确复制,脚本的循环只复制内容。这是由于循环内源路径中的特殊字符引起的吗?转义源路径中的“s”失败,终端指示没有cp的源。
该脚本将包含时间机器日期的文本文件($source)读入数组(日期),然后将预期文件夹复制到新的目标。新的目的地路径是根据用户输入构建的(即,read-p“destination”dest)。
IFS=$'\n' read -d '' -r -a DATES < $source
for date in "${DATES[@]}"
do
cp -RL /Volumes/Time\ Machine\ Backups/Backups.backupdb/Stix\'sâs\ MacBook\ Pro/$date/Macintosh\ HD/Users/foldertocopy /$dest/$date/$name
done
当cp在循环中时,将复制foldertocopy内容,就像没有设置-R标志一样。
我应该做些什么来复制目录而不是内容?
更新:
在路径中使用unicode序列是可行的,尽管在这种情况下没有必要。