这里将会记录一些实用性比较强的代码片段,主要以 c/c++ 语言和 shell 脚本为主,只要对我有帮助的代码,我都会尽可能的保留下来,这样也方便查询和学习。
查找匹配文件中包含指定字符串
find 命令不仅可以查找文件,还可以查找文件内容,这需要与 xargs 一起使用,这个也是一种非常常用的方法:
find . -name "*.php" | xargs grep -n mysql
find . \( -name "*.php" -or -name "*.html" \) | xargs grep -n mysql
下面这个命令可以查询到当前目录下(包含子目录)哪些文件包含 update 字样:
grep -rl 'update' ./
再配合 sed 命令可以实现批量文件内容的修改:
grep -rl 'update' | xargs sed -i 's/update/UPDATE/g'
示例:
#列出所有 .png 或 .jpg 文件,并将文件修改为 644 模式
find /your/directory/path -type f \( -name "*.png" -o -name "*.jpg" \) -exec chmod 644 {} \;
#列出所有 .png 文件的读取权限
find /your/directory/path -type f -name "*.png" -exec ls -l {} \; | awk '{print $1, $9}'
#假设有一个文件列表,想要逐一删除列表中的这些文件
cat file_list.txt | xargs -I {} rm {}
awk 中使用 system 调用系统命令
awk 作为一个强大的文本分析工具,在脚本中可以发挥其巨大的灵活性,一次在写代码的时候,想要在 awk 中直接调用系统命令,本想使用一行完成,结果不行,似乎要分开来写,这种写法几乎和 C 语言一致:
cmd=sprintf("pkg info | grep %s", $1);
system(cmd);