cp 快速备份 bash{} 扩展

cp  快速备份 bash{} 扩展

cp filename{,.bak}

这个命令是用来把filename备份成filename.bak,等同于命令

cp filename filename.bak

这里利用的是bash的brace expansion(大括号扩展)功能,
按照bash手册(man bash)所述:
bash支持{a,b,c}这样的扩展,比如a{d,c,b}e 会被扩展成ade ace abe
所以
filename{,.bak}被扩展成filename filename.bak也就好理解了

 

原文http://www.haw-haw.org/node/1507

 

如果要批量备份就需要用 find 与 cp 向结合,cp 也有批量备份的功能,但是功能太单一,如 -b -S 选项:

    .复制时产生备份文件
     cp -b a.txt tmp/
    .复制时产生备份文件,尾标 ~1~格式
     cp -b -V t   a.txt /tmp   
    .指定备份文件尾标   
     cp -b -S _bak a.txt /tmp

find  /home/user -name date* –mtime 1 –exec cp {} /backup/{} .backup /;

  注意最后一封号 “  ; ” 必须有。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以!以下是你提供的代码的逐句解释: ```bash #!/bin/bash ``` 这一行指定了脚本使用的解释器,这里是 Bash。 ```bash read -p "请输入要备份的文件名" filename ``` 这行代码使用 `read` 命令提示用户输入要备份的文件名,并将用户输入的值存储在变量 `filename` 中。 ```bash if [ -F "$filenam" ]; then ``` 这是一个条件语句开始的部分。它检查文件是否存在。`-F` 参数用于检查给定的路径是否是一个文件。如果文件存在,条件为真。 ```bash current_date=$(date+"%Y-%M-%d") ``` 这行代码使用 `date` 命令获取当前日期,并使用 `+%Y-%M-%d` 格式将日期存储在变量 `current_date` 中。 ```bash backup_fliename="${filename%.*}_${current_date}.${filename##.}" ``` 这行代码创建备份文件名。它使用 `${filename%.*}` 获取文件名(去除扩展名),`${current_date}` 添加当前日期,`${filename##.}` 添加原始文件的扩展名。最终,备份文件名存储在变量 `backup_filename` 中。 ```bash mkdir -p backup ``` 这行代码创建一个名为 "backup" 的目录,如果该目录不存在的话。`-p` 参数确保如果目录已经存在,不会产生错误。 ```bash cp "$filename" "backup/$backup_filename" ``` 这行代码使用 `cp` 命令将原始文件复制到备份目录中,备份文件名为 `backup_filename`。 ```bash echo "文件备份成功,备份名称为: $backup_filename" ``` 如果备份成功,这行代码将输出一条成功消息,并显示备份文件名。 ```bash else echo "文件不存在,请输入正确的文件名" fi ``` 如果文件不存在,条件语句的 `else` 分支将执行,并输出一条错误消息。 以上是你提供的代码的逐句讲解。希望能够帮助你理解代码的逻辑和功能。如果有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值