我想将过去 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
作为更好的选择。