linux cp改文件名,更改Linux `cp`命令以复制文件组

问题:

我想复制一个组文件,但不想逐个输入名称$ ls gmail-meta3*

gmail-meta3 gmail-meta3-REC-1558392194-26467821

gmail-meta3-LAB-1558392194-26467821 gmail-meta3-YAD-1558392194-26467821

如何像旧的DOS命令copy gmail-meta3* *.bak之类的东西?

我不想键入:cp gmail-meta3-LAB-1558392194-26467821 gmail-meta3-LAB-1558392194-26467821.bak

答案1:

可以在bash中使用for循环。for f in gmail-meta3* ; do

mv"$f""$f.bak"

done

你也可以使用。rename 's@$@.bak@' gmail-meta3*

$匹配字符串的结尾,因此该命令将.bak放在文件名的末尾。

答案2:

最接近于DOS范例的是mcp (从mmv软件包):mcp 'gmail-meta3*' 'gmail-meta3#1.bak'

如果zsh可用,它提供的zmv模块可能更接近:autoload -U zmv

zmv -C '(gmail-meta3*)' '$1.bak'printf '%s' gmail-meta3* | while IFS= read -r -d '' f; do cp -a --"$f""$f.bak"; done

或者printf '%s' gmail-meta3* | xargs -0 -I{} cp -a -- {} {}.bak

答案3

更好的答案可以用C语言写,cps () {

# cps"Copy Splat", copy group of files to backup, ie"cps Filename .bak"

# copies Filename1 to Filename1.bak, Filename2 to Filename2.bak, etc.

ls"$1"* | while read varname; do cp -a"$varname""$varname$2"; done

}

以问题为例说明问题的工作原理:$ ls gmail-meta3*

gmail-meta3 gmail-meta3-REC-1558392194-26467821

gmail-meta3-LAB-1558392194-26467821 gmail-meta3-YAD-1558392194-26467821

$ cps gmail-meta3 .bak

$ ls gmail-meta3*

gmail-meta3 gmail-meta3-REC-1558392194-26467821

gmail-meta3.bak gmail-meta3-REC-1558392194-26467821.bak

gmail-meta3-LAB-1558392194-26467821 gmail-meta3-YAD-1558392194-26467821

gmail-meta3-LAB-1558392194-26467821.bak gmail-meta3-YAD-1558392194-26467821.bak

注意:这使用-a标志和cp命令保存文件的时间戳,并为你提供更好的备份,例如:rick@alien:~/gmail$ cps Backup .bak

───────────────────────────────────────────────────────────────────────────────────────────

rick@alien:~/gmail$ ll Backup*

-rw-rw-r-- 1 rick rick 87302 Jun 25 05:25 BackupDays

-rw-rw-r-- 1 rick rick 87302 Jun 25 05:25 BackupDays.bak

-rw-rw-r-- 1 rick rick 153 Jun 25 05:44 BackupSets

-rw-rw-r-- 1 rick rick 153 Jun 25 05:44 BackupSets.bak

───────────────────────────────────────────────────────────────────────────────────────────

rick@alien:~/gmail$

注意文件副本的日期和时间与原件完全相同。

相关文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值