Linux常见命令——(二)

来源:互联网 发布:带虚化的拍照软件 编辑:程序博客网 时间:2024/05/17 07:34
1、find文件查找

查找txt和pdf文件:
find . \( -name "*.txt" -o -name "*.pdf" \) -print
正则方式查找txt和pdf文件:
find . -regex ".*\(\.txt|\.pdf\)$"
否定参数,查找所有非txt文件:
find . ! -name "*.txt" -print
指定搜索深度,打印出当前目录的文件:
find . -maxdepth 1 -type f
按时间搜索
-atime 访问时间 (单位是天,分钟单位则是-amin,以下类似)
-mtime 修改时间 (内容被修改)
-ctime 变化时间 (元数据或权限变化)
最近第7天被访问过的所有文件:
find . -atime 7 -type f -print
删除当前目录下所有的swp文件:
find . -type f -name "*.swp" -delete
将当前目录下的所有权变更为weber:
find . -type f -user root -exec chown weber {} \;
注:{}是一个特殊的字符串,对于每一个匹配的文件,{}会被替换成相应的文件名;
将找到的文件全都copy到另一个目录:
find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD \;


2、grep文本搜索

常用参数:
-o 只输出匹配的文本行
-v 只输出没有匹配的文本行
-c 统计文件中包含文本的次数
-n 打印匹配的行号
-i 搜索时忽略大小写
-l 只打印文件名
在多级目录中对文本递归搜索:
grep "calss" . -R -n
匹配多个模式:
grep -e "calss" -e "vitural" file
将日志中的所有带where条件的sql查找查找出来:
cat log.* | tr a-z A-Z | grep "FROM" | grep "WHERE" > b


3、xargs命令行参数转换

由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如:
这个命令是错误的:find /sbin -perm +700 |ls -l
这样才是正确的:find /sbin -perm +700 |xargs ls -l   
将多行输出转化为单行输出: cat file | xargs
将单行输出转化成多行输出:
-n:指定每行显示的字段数:cat single.txt | xargs -n 3
-t 表示先打印命令,然后再执行。
$ cat 1.txt |xargs -t echo
echo aaa bbb ccc ddd a b 
aaa bbb ccc ddd a b
-i 或者是-I,将xargs的每项名称,一般是一行一行赋值给{},可以用{}代替。
$ ls
1.txt  2.txt  3.txt  log.xml
$ ls *.txt |xargs -t -i mv {} {}.bak
mv 1.txt 1.txt.bak 
mv 2.txt 2.txt.bak 
mv 3.txt 3.txt.bak 
$ ls
1.txt.bak  2.txt.bak  3.txt.bak  log.xml


4、sort排序

-n 按数字进行排序
-d 按字典序进行排序
-r 逆序排序
-k N 指定按第N列排序


5、uniq

消除重复行:sort unsort.txt | uniq
统计各行在文件中出现的次数:sort file | uniq -c
找出重复行:sort file | uniq -d


6、wc统计行和字符


$wc -l file // 统计行数


$wc -w file // 统计单词数


$wc -c file // 统计字符数


7、sed文本替换利器

替换每一行的第一处匹配的text:sed 's/text/replace_text/' file  
全局替换:sed 's/text/replace_text/g' file
默认替换后,输出替换后的内容,如果需要直接替换原文件,使用-i:
sed -i 's/text/repalce_text/g' file

移除空白行:sed '/^$/d' file





原创粉丝点击