文件以及日记查找

作为程序员,调查bug,查看日记是每天必需的工作。下面是几个常用的命令及其组合用法。

  • 查找某个目录下以所有的json文件
find . -type f -name '*.json'
  • 查看包含某些字符串的所有的文件
find . -type f -name *.json | xargs grep "sqls"

这里xargs不能省略,有xargs表示grep文件的内容包含sqls。 如果不带xargs,则表示查找文件名本身包含sqls的文件。

xargs 在这里的作用是将管道的输出的结果转换成一个参数List,然后对List里面的每个参数调用同一个命令,在这里就是grep,所以最后的执行命令是:

grep "sqls" file1.json
grep "sqls" file2.json
...
...
grep "sqls" filen.json

xargs 可以解决某些Unix命令不支持参数过长的问题,比如rm, 如果它后面跟一个很长的参数列表,就会报“参数列表过长”而无法继续执行。所以也可以xargs来解决:

find /path -type f -print0 | xargs -0 rm

xargs结合find来使用的时候还有一个问题,默认xargs用空白字符来分割参数列表,所以如果find的结果有一些文件的路径或者名字包含空白字符,那么这个文件路径就会被分割成多个问题,比如/home/test/My Blog/content1.json 经过xargs处理之后就会被分割成/home/test/MyBlog/content1.json,这样再作为其它的命令的输入就有“file not found”这些问题。

这里我们可以通过xargs的分割符delimiter来,比如上面的-0参数就是指定用null字符来分割参数列表,但这也需要find的结果也需要以null字符而不是回车、换行符,上面的-print0就是指命令的输出以null间隔开。通常find的-print0参数跟xargs的-0是结合着使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值