自动复制文件

自动复制文件

我想将过去 24 小时文档中的所有文件复制到一个文件中。之后我想选择文件中的每一行,这应该是文档的路径,并将其复制到其他目录。但我有一个问题。

这是复制文件中文档的路径和名称:

find ./Documents -mtime -1 -type f > ./Documents/renc.txt

这有效。

我获取了过去 24 小时内在此文件中创建或修改的所有文档及其路径。

但是,当我想给出一个值“b”以便能够复制文件时,我就不能了。

b= `sed -n "3p" ~/Documents/renc.txt`

bash: ~/Documents/test.odt: No such file or directory

如果不清楚,我想要的是从文件 renc.txt 中获取 ~/Documents/test.odt ,它应该获取值“b”。然后有另一个命令行

cp $b ~/Others

当然,之后它们将是几个文档,所以我将添加一个循环来获取文件的每一行。

感谢您的帮助,

答案1

如果您真正问的是“我如何每天将文档复制到不同的目录以进行备份?”那么你就可以使用rsync.该工具将考虑源树中的每个文件,但只会复制源树中较新的文件:

rsync -av Documents/ /path/to/backupDocuments/

如果您问:“我如何每天将文档复制到远程服务器上进行备份?”那么你可以使用rsync运行超过ssh。此版本将仅复制必要的部分源树中较新的文件的数量:

rsync -av Documents/ remoteuser@remotehost:backupDocuments/

如果您确实只想查找过去 24 小时内创建或修改的文档并将其复制到某个位置(请记住,如果您没有每 24 小时精确运行一次脚本,则可能会跳过比此更早的文件),那么这可能会有所帮助。它将在/tmp/copied_files.list途中创建一个文件列表:

find Documents -depth -mtime -1 fprint /tmp/copied_files.list -print0 |
    pax -0 -d -rw /path/to/backupDocuments/

考虑到所有因素,我建议将其rsync作为更好的选择。

相关内容