1、合并一个文件夹下多个文件内容
find -name "*.log" -exec 'cat' {} \; > test.tmp
2、批量删进程
ps aux|grep '/usr/local/bin/php'|xargs kill -9
3、 x="asdgsd";y="x";eval "a=\${$y}" ;echo $a
4.查找重复次数
cat readme.txt|awk -F" " '{print $1}'|sort|uniq -c > readme1.txt
5.合并字符串
cat readme.txt |grep '^b '|awk -F" " '{print $2}' |paste -d"," -s
a=`cat readme.txt |grep '^b '|awk -F" " '{print $2}' |paste -d"," -s`
cat readme1.txt |awk -F" " '{if($1 > 1){print $2}}' > reademe2.txt;
6.十进制转16进制
echo "ibase=10;obase=16;10" | bc |tr '[A-Z]' '[a-z]';
7.找字符串
echo "sadg232asdg" |awk -F"[0-9]+" '{print substr($0, length($1)+1, length($2)-1)}';
8.md5
echo 123|tr -d '\n'|md5sum
10.
echo 'hasdgsdgsad23235dw555343sadgsdwe' |grep -o -E "[0-9]{1,9}"
11.
find -name *.log |xargs rm -rf {} \;
du -h --max-depth=1
12杀进程
ps aux|grep grass |awk '{printf $2" ";}'|xargs kill {} \;
13 字符串替换
$x = "sadgsdg";
echo ${x/d/$+}
14截取某值
readme.txt :
15:35:32.581 [New I/O server worker #2-2] DEBUG c.s.c.c.s.s.SamplingDevic eMessageServerHandler - ChannelId : 2049815843
awk '/ChannelId/{print $NF}' readme.txt
结果:2049815843
15查找指定文件内容
find ./ -name "*.php" | xargs grep -rl "school"
16查找指定文件内容并打印
find ./ -name '*.php' -exec grep -i school {} \;
find . -type f -exec grep 'mingtian' -l {} \;
寻找空的目录:
find /path -depth -type d -empty
寻找空文件:
find /path -depth -type f -empty
查找删除的文件:
find /path -name mytestfile | xargs rm
http://teethgrinder.co.uk/open-flash-chart/index.php
16.查相关字符出现次数
netstat -anpl|awk '{print $1}'|sort|uniq -c
17.获取服务器IP地址
/sbin/ifconfig | grep "inet addr"|awk '{print $2}' | awk -F":" '{print $2}' |head -1
18、curl -s$URL|perl-nle"print for m{http://[^\"]+(?:jpg|png|gif)}g;"|sort-u|xargswget
通过sort/uniq获取文件内容的交集、合集和不同之处:假设有a、b两个文本文件,文件本身已经去除了重复内容。下面是效率最高的方法,可以处理任何体积的文件,甚至几个G的文件。(Sort对内存没有要求,但也许你需要用 -T 参数。)可以试着比较一下,你可以看看如果用Java来处理磁盘上文件的合并,需要用多少行代码。
cat a b | sort | uniq > c # c 是a和b的合集
cat a b | sort | uniq -d > c # c 是a和b的交集
cat a b b | sort | uniq -u > c # c 是a和b的不同
汇总一个文本内容里第三列数字的和(这个方法要比用Python来做快3倍并只需1/3的代码量):
awk ‘{ x += $3 } END { print x }’ myfile
如果你想查看一个目录树里的文件的体积和修改日期,用下面的方法,相当于你挨个目录做”ls -l”,而且输出的形式比你用”ls -lR”更可读:
find . -type f -ls
使用xargs命令。这个命令非常的强大。注意每行上你可以控制多少个东西的执行。如果你不确定它是正确的执行,先使用xargs echo。同样,-I{} 也非常有用。例子:
find . -name \*.py | xargs grep some_function
cat hosts | xargs -I{} ssh root@{} hostname
假设你有一个文本文件,比如一个web服务器日志,在某些行上有一些值,比如URL中的acct_id参数。如果你想统计每个acct_id的所有请求记录:
cat acces
#!/bin/sh du $1 --max-depth=1 | sort -n|awk '{printf "%7.2fM ----> %s\n",$1/1024,$2}'|sed 's:/.*/\([^/]\{1,\}\)$:\1:g'
-Tip16 如何查找某条命令的相关库文件
在Linux环境下通过ldd命令即可实现,在控制台执行:
ldd /bin/ls
即可得到/bin/ls命令的相关库文件列表.
-Tip17 只列子目录(文件)
ls -F | grep /$
你也可以在.bashrc(针对bash)中把该命令作成alias,以后只要敲入sub就可以实现只列子目录的功能.
alias sub = “ls -F | grep /$”
同样,ls -l | grep ^-则是只列普通文件.
20、查文件夹大小
du ./ --max-depth=1
if mkdir /var/lock/mylock 2>/dev/null; then ... rm -rf /var/lock/mylock fi
21、大文件查询指定行内容
sed -n '616220,616237p' /tmp/aaa_201309.log
cat /tmp/aaaa_201309.log |grep -n 131541514512412412
本文出自 “心涯” 博客,谢绝转载!