Linux中,关于find结合xargs/parallel的妙用有? (同时要是实用的,不炫技的)
怪我咯
怪我咯 2017-04-17 14:50:56
0
3
467

今天了解到它们结合在一起所产生的强大的力量.

结合实用,应当能够给日常实用Linux带来效率的提升, 有哪些例子呢?

怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(3)
黄舟

xargs可以看做一个循环辅助函数,它主要解决的就是在linux环境里,直接使用通配符导致参数过多,命令无法执行的情况。同时结合find,可以实现更多灵活性。
比如:

# 把所有以.json为后缀的文件mv到bak目录;如果json文件太多,直接mv *.json bak是不行的。
find . -type f -name "*.json"|xargs -n10 -I% mv % bak
# 把所有json文件重命名为以BAK结尾。find可以使用正则匹配,从而实现更多灵活性。
find . -type f -name "*.json"|xargs -n10 -I% mv % %.BAK
# 对所有json文件进行sed替换,把其中的_id都换成ID,同时原文件变成.bak后缀文件。
find . -type f -name "*.json"|xargs -n3 sed -i.bak  's/\_id/ID/g'

其中 -n number 指定每次给后面的命令多少参数,以上面第一个为例子,如果find到1w个文件,每次执行mv都是3个3个的mv。
-I replstr指定替换字符串,比如我们指定replstr为%,那么在执行后面的命令时,%将会替换成传入参数的实际内容。注意replstr可以替换的字符串长度最大为255 byte
在某些系统上,xargs可以使用-P maxprocs开启并行模式。在多核机器上应该会有明显的速度提升。

いいねを押す +0
左手右手慢动作

多线程下载 cat url_file |xargs -n 1 -P 100 wget
文件每行一个url 100 wget 同时下载

いいねを押す +0
小葫芦

我一般用find -name *.pyc|xargs rm -rf {}来清理项目目录下生成的pyc文件

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!