我是靠谱客的博主 老迟到可乐,最近开发中收集的这篇文章主要介绍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

最后

以上就是老迟到可乐为你收集整理的linux 复制并替换文件,Linux中xargs批量删除-复制-替换-创建文件的全部内容,希望文章能够帮你解决linux 复制并替换文件,Linux中xargs批量删除-复制-替换-创建文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部