做多个目录下的文件的sed替换时发现效率太低,原命令如下:
find $PATH -type f -exec sed -i "s/aaa/bbb/g" {} \;
但是由于单个目录下有8000+个文件,效率实在太低,而且多个目录,多个替换,整个耗时长达10+秒.
研究目录下文件结构发现,有很多jpg,gif,swf等文件,而且这些文件大小还不小,sed扫描时间很长,故希望能跳过这些文件.于是命令就变成这个样子:
find $PATH -type f -name ".*\.\(jpg\|png\|swf\|psd\|JPG\)" -exec sed -i "s/aaa/bbb/g" {} \;
但是我的目的是不替换这些文件...遍寻正则取反未果,于是把主意打到xargs上.利用grep -v取反.
最后的脚本如下:
find $PATH -type f -print | grep -v ".*\.\(jpg\|JPG\|gif\|png\|ico\|psd\|swf\)" | xargs sed -i "s/aaa/bbb/g";
脚本耗时速度从10+s减为2-3s.
xargs有个-P命令,可以在CPU多核时增加并行处理的能力
通过下述命令可以查看你的cpu信息
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
最后,上述脚本更新为
find $PATH -type f -print | grep -v ".*\.\(jpg\|JPG\|gif\|png\|ico\|psd\|swf\)" | xargs -P 0 sed -i "s/aaa/bbb/g";
-P的默认值为1,设置为0时为使用尽可能多的cpu内核并行处理
最后,脚本的执行时间下降至1s内.
相关推荐
### Shell脚本学习指南知识点详解 #### 一、Shell脚本概述 - **定义与作用**:Shell脚本是用于Unix/Linux系统中的自动化任务的一种编程语言。它通过一系列的命令来实现对系统的控制和管理,可以极大地提高工作效率...
Linux Shell 脚本编程基础知识点总结 Linux 脚本编写基础 1.1 语法基本介绍 * `#!` 符号用来告诉系统它后面的参数是用来执行该文件的程序 * 在 Linux 中,使用 `/bin/sh` 来执行程序 * 编辑好脚本后,需要使其可...
根据提供的信息,我们可以总结出以下关于“shell脚本学习指南”的相关知识点: ### shell脚本基础知识 1. **Shell的概念**: - Shell是用户与操作系统之间的接口。 - 它是一个命令解释器,能够执行用户输入的...
shell脚本编程学习笔记汇总 本文档总结了 Linux shell 脚本编程的学习笔记,涵盖了 shell 脚本的定义、编写、权限、存放位置、函数、变量、IF 控制语句、命令退出状态等知识点。 一、shell脚本的定义 shell 脚本是...
Linux shell脚本基础知识 在Linux系统中,shell脚本是一种非常重要的工具,能够自动完成特定的任务,提高工作效率。...通过本文的学习,读者可以掌握shell脚本的基础知识,提高自己的工作效率和自动化能力。
下面将详细介绍从给出的内容中能够总结出的一些Shell脚本编程知识点。 首先,Shell脚本编程是Linux系统管理员必备的技能之一,它允许自动化地执行许多日常任务。Shell脚本可以通过组合常用的命令行工具,比如rsync...
总结来说,"shell脚本100例-详细高清版"是一份全面的教程,涵盖了shell脚本的基础和实战应用,对于想在Linux环境下提升自动化能力的人来说,这是一份非常有价值的参考资料。通过阅读和实践其中的脚本,你将逐步成长...
Shell脚本是Linux/Unix操作系统中的一个强大工具,...总结,Shell脚本是一种强大的工具,能够帮助用户自动化重复性任务,提高效率。通过理解基本概念,熟悉常用命令,编写并实践脚本,你很快就能成为Shell脚本的熟手。
根据提供的文件信息,“LINUX+SHELL脚本攻略.pdf”似乎是一份关于Linux系统下的Shell脚本编程指南。这里我们将从几个方面对这份资料可能涵盖的关键知识点进行总结与扩展。 ### Linux简介 Linux是一种免费开放源...
《Shell脚本专家指南》是一本内容丰富、实用性强的书籍,覆盖了Shell脚本编程的各个方面,不仅适用于初学者学习基础知识,也适合高级用户探索更深入的技术细节。通过阅读这本书,读者可以掌握大量的技巧和方法,提高...
总结来说,shell脚本是Linux系统管理和自动化任务的强大工具,掌握其基本概念、运行方式、变量使用以及运算,将极大地提高工作效率。通过不断实践和学习,你可以编写出更加复杂和高效的shell脚本来应对日常的系统...