Linux中如何使用mac find 命令命令进行日志定期转移

拒绝访问 | www.laozuo.org | 百度云加速
请打开cookies.
此网站 (www.laozuo.org) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(42a4-ua98).
重新安装浏览器,或使用别的浏览器Linux下find命令用法小结_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Linux下find命令用法小结
&&find是linux下的一个常用但功能强大的数据查询命令,本文是一些个人经验总结
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢博客分类:
1,在某个路径下查文件。
在/etc下查找“*.log”的文件
find /etc -name “*.log”
2,扩展,列出某个路径下所有文件,包括子目录。
find /etc -name “*”
3,在某个路径下查找所有包含“hello abcserver”字符串的文件。
find /etc -name “*” | xargs grep “hello abcserver”
或者find /etc -name “*” | xargs grep “hello abcserver” & ./cqtest.txt
4,网上摘抄的几个和查找文件或文件内容相关的命令详说:
正则表达式\分别表示单词的开始和结束ex: \ 以T或者t开头,om结尾的单词正则表达式的元字符集:1) ^行首 /^love/ 以love开头的行;2) $行尾 /love$/ 以love结尾的行;3) .
/l..e/ 匹配所有这样的行,字母l后面紧跟任意两个字符然后是e的行4) * 重复0次或者任意多次前面字符5) [x-y] 字符范围6) [^x-y] 排除字符范围7) \ 转义字符8) \ 界定单词的开头和结尾9) \( \) 标记后面用到的匹配字符 \(love\)able \1er=loveable lover10) x\{m,n\} 重复字符x至少m此,至多n次——————————————————————————————————————————————————grep家族RE– g: p: print出了上面10种元字符集,grep还支持下面的RE\w 字母或者数字\W 非单词字符(标点符号)+ 重复一个或者多个前面的字符| 或 love(a:b)表示lovea或者lobeb?单个字符grep返回状态值($?) 0表示成功,1表示失败,2表示没有找到文件rgrep递归访问目录树—————————————————————————ls -l |grep ^d 显示目录grep -n -v -# -A# -B#-i 不区分大小写-n 显示匹配行和行号-v只显示不匹配行-#显示匹配行上下#行-A#匹配行后面打印#行-B#匹配行前面打印#行-c 只输出匹配行的行数-h 查询多文件的时候不显示匹配的文件名字-l 查询多文件只显示匹配的文件名-s 不显示错误信息grep与正则表达式同用grep “^[^abc]” *.f 提取行首不是abc的行grep “[0-9]\{3\}[8]” *.f 提取类似xxx8的行,x表示任意数字grep “a\{2\}” *.f 显示a至少出现两次的行,注意grep是以行处理单位的grep -n “^$” file 列出空行的行号-E参数,可以使用”与”和”或”模式grep -E “abc | def” *.f 显示包含abc或者def的行ex:ls -l | grep “^$” 显示目录ls -l | grep “^d” 显示文件ls -l | grep “^d..x..x..x” 显示特定权限的目录ps aux | grep “httpd” |grep -v “grep”——————————————————————————————————————————————————**使用find和xargs1. find pathname -options [-print -exec -ok]-optinos1)-name:按照文件名查找find ~ -name “*.txt” -printfind ~ -name “[a-z][0-9].txt” -print2)-perm:按照权限查找文件find ~ -perm 755 -print 查找权限为755的文件find ~ -perm 007 -print 查找o位置上具有7权限的文件find ~ -perm 4000 -print 查找具有suid的文件3)-prune不在当前目录下查找4)-user和-nouserfind ~ -user zhao -print 查找文件属主是zhao的文件find ~ -nouser -print 查找文件属主已经被删除的文件5)-group和-nogroupfind ~ -group zhao -print 查找文件群组是zhao的文件6)按照时间find ~ -mtime -5 -print 文件更改时间在5天内的文件find ~ -mtime +3 -print 文件更改时间在3天前的文件find ~ -newer file1 -print 查找比文件file1新的文件7)按照类型查找find ~ -type d -print 查找所有目录8)按照大小find ~ -size +1000000C -print 查找文件大小大于1000000字节(1M)的文件9)查找位于本文件系统里面的文件find / -name “*.txt” -mount -print-exec,-ok:find命令对于匹配文件执行该参数所给出shell命令,相应命令形式为: ‘command’ {} \;-ok 在执行命令前要确认find ~ -type f -exec ls -l {} \;find / -name “*.log” -mtime +5 -ok rm {} \;find . -name core -exec rm {} \;使用-x dev参数防止find搜索其他分区find . -size 0 -exec rm {} \;删除尺寸为0的文件2. xargs与-exec功能类似find ~ -type f | xargs ls -lfind / -name “*.log” -type f -print| xargs grep -i DB0find . -type f |xargs grep -i “Mary”在所有文件中检索字符串Maryls *~ |xargs rm -rf删除所有以~结尾的文件——————————————————————————————————————————————————SED:=====sed [options] sedcommand inputfile &outputfilesed不接触初始输入文件,对其不做修改,若想保存改动,重要将输出重定向到一个文件即可a\: 当前行后面加入一行或者文本c\: 用信文本替换本行的文本d: 删除一行D: 删除模板块的第一行i\: 在当前行上面插入文本h: 拷贝模板块的内容到内存缓冲区H: 追加模板块的内容到内存缓冲区g: 获得内存缓冲区内容,并替换当前模板中的文本G: 获得内存缓冲区内容,并追加到当前模版块文本的后面n: 读取下一个输入行,用下一个命令处理新行而不是第一个命令N: 追加下一个输入行到模版块后面,并在二者间插入一个新行,改变当前行的号码p: 打印模板块的行P: 打印模板块的地一行q: 退出sedr file: 从file中读行!: 表示后面的命令对所有没有选中的行起作用s/re/strint/: 用string替换正则表达式re=: 打印当前行号#command: 把注释扩展到下一个换行符号前l 打印匹配行,包括显示控制符号**替换标记g: 行内全部替换p: 打印行w: 把行写入一个文件x: 互换模板块和缓冲区中的文本y: 把一个字符翻译成另外一个字符**sed中元字符可以使用正则表达式中所有的新加:& 保存搜索字符 s/love/**&**/ 用**love**代替love**sed定位文本的方式x 行号x-y 从x行到y行/patern/ 查询包括patern的行x,y! 不包括指定x-y行号的行ex:sed ‘/Tom/d’ file删除包含Tom的行;sed ‘/Tom/!d’ file删除所有不包含Tom的行;sed -n /north/p’ file打印包含north的行;sed ‘3d’ file删除第三行;sed ’3,$d’ file删除第三行到最后一行;sed ‘$d’ file删除最后一行;sed ‘/north/d’ file删除包含north的行;sed -n ‘s/west/north/g’ file替换所有west为north;sed -n ‘s/^west/north/p’ file一行的开头的west用north替换,并打印发生替换的行;sed ‘s/[0-9][0-9]$/&.5/’ file所有以两个数字结尾的行,最后两个数字被他们自己替换并附加.5;sed -n ‘s/\(Mar\)got/\1ianne/p’ file将Margot替换为Marianne,并打印发生替换的行;sed ‘s#abc#ABC#g’ file所有abc由ABC替换,(所有s后面紧跟的字符都被认为是新的分隔符);sed ‘/west/,/east/p’ file打印包含west行和包含east行中间的所有行;sed ’1,/east/s/$/**A**/’ file地一行和包含east行之间的所有行的行尾加上字符串**A**;sed -e ’1,3d’ -e ‘s/aa/bb/’ file先删除1到3行,然后用bb替换aa;sed ‘/Sam/r file1′ file将文件file1中的内容附加在包含Sam的行后面;sed ‘/Sam/w file1′ file将还有Sam行写入文件file1中;sed ‘/^north /a\new line second line’ file所有以north加空格开头的行后面附加上两行文本,a\表示追加文本,\表示换行(tcsh中需要,bash中不需要);sed ‘/^north/i\new line’ file在行首为north的行前面插入一个新行;sed ‘/norht/{n; s/aa/bb/;}’ file首先匹配含有north的行,然后执行一组命令,n表示移到下一行,并用bb代替aa;sed ’1,3g/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/’ file将1到3行中的所有小写字母用大写字母替换;sed ‘/Lewis/{s/Lewis/q;}’ file首先找到匹配Lewis的行,然后用bbb代替Lewis,接着q退出seq;sed -e ‘/north/h’ -e ‘$G’ file首先找到包含norht的行,h拷贝到内存缓冲区,然后到文件随后一行($),G附加在最后一行后面;sed -e ‘/we/{h;d;}’ -e ‘/ct/{G:}’ file查找包含we的行,拷贝并且删除他,然后查找包含ct的行,将拷贝内容附加到他后面;sed -e ‘/north/h’ -e ‘$g’ file首先找到包含norht的行,h拷贝到内存缓冲区,然后到文件随后一行并覆盖他;sed -n ‘l’ file打印所有包含不能打印字符的行。sed -n ‘/.*ing/p’ file显示含有以ing结尾单词的行;sed -n ‘/music/=’ file打印含有music的行号;sed ‘^$d’ file删除空行sed ‘s/^/abcd/g’ file在行首填加abcdsed ‘s/$/abcd/g’ file在行尾填加abcdsed ‘s/rm$/played &/g’ file&表示在替换的时候保留被替换的词(rm–played rm)sed ‘s/^M//g’ file去掉行尾的^M (^M的输入,先按ctrl+v然后按enter即可即可)——————————————————————————————————————————————————gawk程序:awk [-F 域分隔符] ‘commands’ inputfileawk执行时,其域标志符为$1,$2,$3………$n,$0表示所有的域awk -v var=value 赋值给一个用户定义的变量awk ‘pattern’ fileawk ‘{action}’ fileawk ‘pattern {action}’ fileex:awk ‘{print $0}’ file打印所有的域awk ‘/Mary/’ file打印包含file中包含Mary的行;awk ‘{print $1}’ file打印文件的第一列(第一个域);awk ‘/Mary/ {print $1,$2}’ file打印文件file包含Mary的行的第一和第二个域;df | awk ‘S4&75000′打印可用空间大于75000的文件系统date | awk ‘{print ” month:”, $2, “\n year:” $6}’格式化date的输出;awk ‘BEGIN{OFMT=”%.2f”; print 1.25463}’指定数字输出格式,小数点后面保留两位有效数(1.25);awk ‘/[ab]cdef/’ file打印匹配acdef或者bcdef的行;awk ‘{print NR, $0}’ fileawk ‘{print $0, NR}’ fileNR当前记录数,每处理一个记录NR就加1上面的命令相当于在每一行后面加上一个行号;NF则记录每一行的域的个数;awk -F ‘[ :\t]‘ ‘{print $0}’ file指定域分隔符为空格、:或者tabawk ‘/^[A-Z][a-z]+/’ file打印所有以一个大写字母开头,然后是一个或者多个小写字母的行;awk ‘$1~/[Bb]ill/’ file第一个域匹配Bill或者bill的行;awk ‘$1!~/ly$/’ file第一个域末尾不是ly的行;awk ‘/^(No|no)/’ file打印行首为No或者no的行;awk ‘BEGIN {print “file head \n”} {print $1 \t $4}’ fileawk ‘BEGIN {print “file head \n”} {print $1 \t $4}’ file |tee out.file打印文件的时候附加一个文件头awk ‘BEGIN {print “file head \n”} {print $1 \t $4} END {print “end of file”}’ file打印文件的时候附加一个文件头和文件尾awk中使用正则表达式awk ‘{if($1~/hello/) print $0}’ file如果域1中包含hello,就打印所有的域~//表示匹配正则表达式,!~//表示不匹配正则表达式awk ‘{if($6,&=,==,!=,~,!~(匹配,不匹配)awk ‘$3==5346′ file第三个域等于5346,就打印出该行;awk ‘$3&5000 {print $1}’ file第三个域大于5000就打印该行第一个域awk ‘{max={$1&$2}?$1:$2; print max}’ file如果第一个域大于第二个域,max=$1否则=$2,打印最大值awk ‘{print ($1==11?”high\t” $2:”low\t” $2)}’ file&&逻辑和,||逻辑或,!逻辑非awk ‘$2==$5 && $3&5′ fileawk ‘/Tom/,/Jary/’ fileTom第一次出现和Jary第一次出现之间的所有行;awk ‘/north/ {print $3+10}’ file包含north行的地三个域加10;awk ‘$3==”aa” {$2=”dd”; print $0}’ file将地三个域为aa的行的第二域变成dd,并打印该行;**awk编程:使用变量awk ‘$1~/Tom/ {wage=$2+$3; print wage}’ file先扫描第一个域,如果匹配Tom,就将第二和第三域的总和赋值给变量wage并输出;awk ‘BEGIN{FS=”:”; OFS=”\t”;ORS=”\n\n”}{print $0}’ file处理文件前设置域分隔符(FS)为(:)输出域分隔(OFS)为(\t)输出记录分隔符(ORS)为(\n\n)awk ‘END{print “The number of record is:’ NR}’ file处理完文件后执行END语句输出总记录数awk ‘/Mary/{count++} END{print “Mary was found” count “times”}’ file计数文件中Mary出现的次数;**awk输入输出重定向awk ‘$4&=70 {print $1, $2 &”outfile”}’ file结果重定向到文件outfile中awk ‘BEGIN{“date” | print d}’将date结果输给getline函数,并打印(getline从标准输出,管道等获得输入)awk ‘BEGIN{“date” | split(d,mon); print mon[1] mon[2]}’将date结果输给getline函数,slpit将d分解成数组,打印数组第2个变量**split函数:split(string,array,field seperator)awk ‘BEGIN{while(“ls”|getline) print}’依次输出ls的每一项awk‘BEGIN{print “what is your name?”; getline name 0) {lc++; print lc ” ” a}}’awk ‘BEGIN{while(getline a 0) {lc++; print lc}}’如果文件不存在,getline返回-1到达文件尾返回0读到一行返回1读取文件/etc/passwd,计数行数**awk控制语句if语句:awk ‘{if($6&50) print $1 “too high”}’ fileawk ‘{if($6&20 && $250}{x++; print x} else {y++;print y}’ fileawk ‘{if($1~/peter/){next} else {print}}’ file如果第一个域包含peter,awk就忽略这一行,读取文件的下一行,脚本从头开始执行;循环语句:awk ‘{i=1; while(i filecat -v file 显示文件,包括其中的控制符(-v)cat -n file 为每一行编号cat -b file 每个非空行编号cat -T file 以^I显示tab3.管道 | 把一个命令的输出传递给另外一个命令为输入ex:ls | grep file.doc查找文件file.docwho | awk ‘{print $1 “\t” $2}’ 只显示用户名和所在终端df -h | awk ‘{print $1}’ |grep -v “filesystem” (-v表示输出不包括filesystem的项目)df -h | awk ‘{print $1}’ |grep -v “filesystem” |sed ‘s/\/dev\///g’ 显示设备的时候不显示/dev/4.teewho | tee who.txt 输出到屏幕的同时输出到文件who | tee -a who.txt 附加在文件的后面5.文件重定向ls -l |grep ^d &file.out 所有目录名字重定向到一个文件cat /etc/passwd | awk -F: ‘{print $1}’ |sort &a.out (-F:指定分隔符为:)cat &file.out rebootat& ctrl+D3小时后reboot3.bc – 计算器scale=3 设置小数点后数字为数ibase=2 二进制运算4.ls -d dir只显示目录而不显示其下面的文件。5.sync更新superblock并把它写入硬盘6.scp
服务器间拷贝文件
浏览 39709
浏览: 856694 次
来自: 北京
弄了半天,参照你的方法解决了.特来感谢,知道可能是先加载,但是 ...
请问怎么使用,运行之后d盘符没有生产音频文件呢?
chenghong726 写道你好,我也遇到你这样的问题,按照 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'博客分类:
可以使用find命令find 路径 -mtime +天数 -type f -name "文件名" -exec rm -rf {} \;
find /tmp -mtime +30 -type f -name "*" -exec rm -rf {} \;/tmp --设置查找的目录;-mtime +30 --设置修改时间为30天前;-type f --设置查找的类型为文件;-name "*" --设置文件名称,可以使用通配符;-exec rm -rf --查找完毕后执行删除操作; {} \; --固定写法
另外的方法大同小异:#find /tmp -mtime +30 -type f | xargs rm -rf
可以吧这个命令写到脚本里,cleandata.shfind /tmp -mtime +30 -type f -name "*" -exec rm -rf {} \;
配置可执行chmod u+x ./cleandata.sh
配置到crontabcrontab -e<span style="color: # * * *
/home/username/cleandata.sh & /dev/null 2&&1
每天零点自动执行
第一个*号表示时间中的 分钟
取值范围:0-59第二个*号表示时间中的 小时
取值范围:0-23第三个*号表示一个月中的第几天,取值范围:1-31第四个*号表示一年中的第几个月,取值范围:1-12第五个*号表示一个星期中的第几天,以星期天开始依次的取值为0~7,0、7都表示星期天
浏览: 1338839 次
来自: 北京
代码报异常啊
mysql的注释符号“-- ”,“#”,“/**/”要加上吗? ...
Thanks for sharing!
多谢楼主分享!
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'find命令实例&linux日志定期迁移实现方法
find命令实例 linux日志定期迁移实现方法
linux系统中,使用find命令定期迁移linux日志的方法。
一,find命令格式
find pathname --options [-exec -print -ok ..]
二,find命令参数
pathname:find命令查找的目录路径
-print:find命令将匹配的文件输出到标准输出
-exec:find命令对匹配的文件执行该参数给出的shell命令.格式为: command {} \;
-ok:类似与exec的作用
三,find命令选项
-name:按照文件名进行查找
-perm:按文件权限来查找
-user:按文件的用户主查找
-group:按文件的用户组查找
-type:查找某一类型的文件
b -- 块设备文件
c -- 字符设备文件
p -- 管道文件
l -- 符号链接文件
f -- 普通文件
-mtime:按照文件的更改时间来查找文件
-n -- 表示文件更改时间距现在n天以内
+n -- 表示文件更改时间距现在n天以前
四,日志迁移脚本
使用了find命令的mtime参数,将2个星期前的日志文件统一迁移到指定目录下。
#!/bin/bash
#1.标准定义
backup_dir="/backup/log"
keep_days=14
week_num=`date +%W`
flag=`expr $week_num % 2`
#2.需要迁移目录
test1="/var/log/nginx/test1"
migrate_dir=($test1)
#3.迁移备份,每两周执行一次
if [ $flag -eq 1 ];then
for dir in ${clean_dir[*]}
if [ -d $dir ]; then
#构建迁移目录
if [ ! -d $backup_dir$dir ];then
mkdir -p $backup_dir$dir
for file in `find $dir -type f -mtime +$keep_days -exec ls {}
mv $file $backup_dir$dir
Crontab每两周执行日志迁移脚本
#日志定期迁移脚本
0 4 * * 7/2
/home/wangzhengyi/scripts/clean-scripts/migrate.sh
按文件大小查找
find命令的size参数可以按照文件大小进行查找,size的大小选项如下:
例如,查找指定目录下大于10k的文件,命令:
http://www.linuxprobe.com/
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 linux find命令 的文章

 

随机推荐