微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用bash脚本备份旧目录

我正在编写一个小的bash脚本,当它们超过某个年龄且遇到一些困难时,会以压缩格式将目录存档到另一个位置.这就是我正在做的事情.
#!/bin/bash
# Archives completed CDP episodes to compressed storage. Will eventually expand to put these off-site as well.

InputDir="/home/wgant/stuff/"
OutputDir="/home/wgant/archived/"

find $InputDir$-maxdepth 0 -mtime +1 -type d -exec echo $OutputDir${} \;

我在bash上有点绿,所以我慢慢来.对于第一步,我只想转储一个输出文件将被调用的列表.但是,当我运行上面的命令时,文件名是正确的,但完整的路径显然是连接在一起,我不想要.我如何删除文件名?

显然,一旦这个工作,我将调用它来创建tarball并删除有问题的目录.

语法不太对,这更好:
find $InputDir -maxdepth 0 -mtime +1 -type d -exec echo $OutputDir{} \;

删除路径的前缀部分,一种简单的方法是在执行find之前进入目录,如下所示:

InputDir="/home/wgant/stuff"
OutputDir="/home/wgant/archived"

(cd "$InputDir"; find . -maxdepth 0 -mtime +1 -type d -exec echo "$OutputDir"/{} \;)

请注意,我将最后一个命令包装在(…)中.这是一个子壳,它的目的是cd命令只在其中有效,脚本的其余部分不会受其影响.这很重要,因为不建议在脚本中使用cd更改工作目录.将其包裹在(…)内使其安全.

原文地址:https://www.jb51.cc/bash/385544.html

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

相关推荐