linux 复制并替换文件,Linux中xargs批量删除-复制-替换-创建文件

背景

现在有6个文件夹,每个文件夹中有一些文件,想把这些文件提取到一个新的文件夹中。echo ls 以及xargs的不同.

1. ls 与xargs

1.1 ls结果

(base) [dengfei@localhost f90]$ ls y[1-6]/y[1-6]_f90_blup_ggp.csv

y1/y1_f90_blup_ggp.csv y4/y4_f90_blup_ggp.csv

y2/y2_f90_blup_ggp.csv y5/y5_f90_blup_ggp.csv

y3/y3_f90_blup_ggp.csv y6/y6_f90_blup_ggp.csv

1.2. 使用xargs将其复制到re文件夹中

(base) [dengfei@localhost f90]$ ls y[1-6]/y[1-6]_f90_blup_ggp.csv|xargs cp re

cp: target ‘y6/y6_f90_blup_ggp.csv’ is not a directory

这里, 使用xargs默认是将其作为对象,放到ls的最后面,不是我们想要的, 我们使用-i 然后通过{}进行引用:

(base) [dengfei@localhost f90]$ ls y[1-6]/y[1-6]_f90_blup_ggp.csv|xargs -i cp {} re

使用tree查看结果,搞定!

(base) [dengfei@localhost f90]$ tree re

re

├── y1_f90_blup_ggp.csv

├── y2_f90_blup_ggp.csv

├── y3_f90_blup_ggp.csv

├── y4_f90_blup_ggp.csv

├── y5_f90_blup_ggp.csv

└── y6_f90_blup_ggp.csv

0 directories, 6 files

如果cp -v会显示具体copy的对象过程

(base) [dengfei@localhost f90]$ ls y[1-6]/y[1-6]_f90_blup_ggp.csv|xargs -i cp -v {} re

‘y1/y1_f90_blup_ggp.csv’ -> ‘re/y1_f90_blup_ggp.csv’

‘y2/y2_f90_blup_ggp.csv’ -> ‘re/y2_f90_blup_ggp.csv’

‘y3/y3_f90_blup_ggp.csv’ -> ‘re/y3_f90_blup_ggp.csv’

‘y4/y4_f90_blup_ggp.csv’ -> ‘re/y4_f90_blup_ggp.csv’

‘y5/y5_f90_blup_ggp.csv’ -> ‘re/y5_f90_blup_ggp.csv’

‘y6/y6_f90_blup_ggp.csv’ -> ‘re/y6_f90_blup_ggp.csv’

2. echo 与xargs

2.1 echo结果

结果展示, 结果是类似的

(base) [dengfei@localhost f90]$ echo y[1-6]/y[1-6]_f90_blup_ggp.csv

y1/y1_f90_blup_ggp.csv y2/y2_f90_blup_ggp.csv y3/y3_f90_blup_ggp.csv y4/y4_f90_blup_ggp.csv y5/y5_f90_blup_ggp.csv y6/y6_f90_blup_ggp.csv

2.2 使用xargs将其复制到re文件夹中

使用xargs默认是将其作为对象,放到ls的最后面,不是我们想要的, 我们使用-i 然后通过{}进行引用:

(base) [dengfei@localhost f90]$ echo y[1-6]/y[1-6]_f90_blup_ggp.csv|xargs -i cp {} re

报错:

(base) [dengfei@localhost f90]$ echo y[1-6]/y[1-6]_f90_blup_ggp.csv|xargs -i cp {} re

cp: cannot stat ‘y1/y1_f90_blup_ggp.csv y2/y2_f90_blup_ggp.csv y3/y3_f90_blup_ggp.csv y4/y4_f90_blup_ggp.csv y5/y5_f90_blup_ggp.csv y6/y6_f90_blup_ggp.csv’: No such file or directory

结果显示,echo对应的是字符串, 而ls对应的是单个字符,所以ls能搞定, 但是echo搞不定。

3. 分两步搞定

1, 使用ls或者echo打印文件

2, 使用xargs每个对象成为一行

3, 使用xargs -i 进行制定位置(通过{})

echo y[1-6]/y[1-6]_f90_blup_ggp.csv|xargs -n1|xargs -i cp {} re

下面的命令效果一样:

ls y[1-6]/y[1-6]_f90_blup_ggp.csv|xargs -n1|xargs -i cp {} re

这样就消除了是用ls还是echo的问题. 而且逻辑更加清楚.

标签:xargs,ggp,批量,re,f90,blup,Linux,csv

来源: https://blog.csdn.net/yijiaobani/article/details/89474261

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值