我被滴滴打车爱你我就骚扰你了怎么办

UNIX(31)
SYSTEM(35)
系统应用(16)
/charmitem/blog/item/701c3c32b63f33e21b4cff77.html&
例:删除/home/raven下,包括子目录里所有名为abc.txt的文件:
find /home/raven -name abc.txt | xargs rm -rf
如果不使用xargs,则为:
find /home/raven -name abc.txt -exec rm -fv {} \;
前言:关于find命令
由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。
一、find 命令格式
1、find命令的一般形式为;
find pathname -options [-print -exec -ok ...]
2、find命令的参数;
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{&&&}和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
3、find命令选项
按照文件名查找文件。
按照文件权限来查找文件。
使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
按照文件属主来查找文件。
按照文件所属的组来查找文件。
-mtime -n +n
按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2
查找更改时间比文件file1新但比文件file2旧的文件。
查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
另外,下面三个的区别:
&&&-amin n
  查找系统中最后N分钟访问的文件
  -atime n
  查找系统中最后n*24小时访问的文件
  -cmin n
  查找系统中最后N分钟被改变文件状态的文件
  -ctime n
  查找系统中最后n*24小时被改变文件状态的文件
&&& -mmin n
  查找系统中最后N分钟被改变文件数据的文件
  -mtime n
  查找系统中最后n*24小时被改变文件数据的文件
4、使用exec或ok来执行shell命令
使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的
在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。
exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。
例如:为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的-exec选项中
# find . -type f -exec ls -l { } \;
-rw-r--r--&&&&1 root&&&&&root&&&&&&&&-02-25 ./conf/httpd.conf
-rw-r--r--&&&&1 root&&&&&root&&&&&&&&-02-25 ./conf/magic
-rw-r--r--&&&&1 root&&&&&root&&&&&&&&&&180
./conf.d/README
上面的例子中,find命令匹配到了当前目录下的所有普通文件,并在-exec选项中使用ls -l命令将它们列出。
在/logs目录中查找更改时间在5日以前的文件并删除它们:
$ find logs -type f -mtime +5 -exec rm { } \;
记住:在shell中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如mv或rm命令时,可以使用-exec选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。
在下面的例子中, find命令在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。
$ find . -name &*.conf& -mtime +5 -ok rm { } \;
& rm ... ./conf/httpd.conf & ? n
按y键删除文件,按n键不删除。
任何形式的命令都可以在-exec选项中使用。
在下面的例子中我们使用grep命令。find命令首先匹配所有文件名为“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个sam用户。
# find /etc -name &passwd*& -exec grep &sam& { } \;
sam:x:501:501::/usr/sam:/bin/bash
二、find命令的例子;
1、查找当前用户主目录下的所有文件:
下面两种方法都可以使用
$ find $HOME -print
$ find ~ -print
2、让当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件;
$ find . -type f -perm 644 -exec ls -l { } \;
3、为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径;
$ find / -type f -size 0 -exec ls -l { } \;
4、查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们;
$ find /var/logs -type f -mtime +7 -ok rm { } \;
5、为了查找系统中所有属于root组的文件;
$find . -group root -exec ls -l { } \;
-rw-r--r--&&&&1 root&&&&&root&&&&&&&&&&595 10月 31 01:09 ./fie1
6、find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件。
该命令只检查三位数字,所以相应文件的后缀不要超过999。先建几个admin.log*的文件 ,才能使用下面这个命令
$ find . -name &admin.log[0-9][0-9][0-9]& -atime -7 -ok
& rm ... ./admin.log001 & ? n
& rm ... ./admin.log002 & ? n
& rm ... ./admin.log042 & ? n
& rm ... ./admin.log942 & ? n
7、为了查找当前文件系统中的所有目录并排序;
$ find . -type d | sort
8、为了查找系统中所有的rmt磁带设备;
$ find /dev/rmt -print
xargs - build and execute command lines from standard input
在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现 溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;
而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
来看看xargs命令是如何同find命令一起使用的,并给出一些例子。
下面的例子查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件
#find . -type f -print | xargs file
./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text
./.kde/Autostart/.directory:&&&&&&ISO-8859 text\
在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中:
$ find / -name &core& -print | xargs echo && &/tmp/core.log
上面这个执行太慢,我改成在当前目录下查找
#find . -name &file*& -print | xargs echo && & /temp/core.log
# cat /temp/core.log
在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限:
drwxrwxrwx&&&&2 sam&&&&&&adm&&&&&&&&&&4096 10月 30 20:14 file6
-rwxrwxrwx&&&&2 sam&&&&&&adm&&&&&&&&&&&&&0 10月 31 01:01 http3.conf
-rwxrwxrwx&&&&2 sam&&&&&&adm&&&&&&&&&&&&&0 10月 31 01:01 httpd.conf
# find . -perm -7 -print | xargs chmod o-w
drwxrwxr-x&&&&2 sam&&&&&&adm&&&&&&&&&&4096 10月 30 20:14 file6
-rwxrwxr-x&&&&2 sam&&&&&&adm&&&&&&&&&&&&&0 10月 31 01:01 http3.conf
-rwxrwxr-x&&&&2 sam&&&&&&adm&&&&&&&&&&&&&0 10月 31 01:01 httpd.conf
用grep命令在所有的普通文件中搜索hostname这个词:
# find . -type f -print | xargs grep &hostname&
./httpd1.conf:#&&&&&different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
用grep命令在当前目录下的所有普通文件中搜索hostnames这个词:
# find . -name \* -type f -print | xargs grep &hostnames&
./httpd1.conf:#&&&&&different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
注意,在上面的例子中, \用来取消find命令中的*在shell中的特殊含义。
find命令配合使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的命令。
四、find 命令的参数
下面是find一些常用参数的例子,有用到的时候查查就行了,像上面前几个贴子,都用到了其中的的一些参数,也可以用man或查看论坛里其它贴子有find的命令手册
1、使用name选项
文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用。
可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。
不管当前路径是什么,如果想要在自己的根目录$HOME中查找文件名符合*.txt的文件,使用~作为 'pathname'参数,波浪号~代表了你的$HOME目录。
$ find ~ -name &*.txt& -print
想要在当前目录及子目录中查找所有的‘ *.txt’文件,可以用:
$ find . -name &*.txt& -print
想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可以用:
$ find . -name &[A-Z]*& -print
想要在/etc目录中查找文件名以host开头的文件,可以用:
$ find /etc -name &host*& -print
想要查找$HOME目录中的文件,可以用:
$ find ~ -name &*& -print 或find . -print
要想让系统高负荷运行,就从根目录开始查找所有的文件。
$ find / -name &*& -print
如果想在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是.txt的文件,下面的命令就能够返回名为ax37.txt的文件:
$find . -name &[a-z][a-z][0--9][0--9].txt& -print
2、用perm选项
按照文件权限模式用-perm选项,按文件权限模式来查找文件的话。最好使用八进制的权限表示法。
如在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件,可以用:
$ find . -perm 755 -print
还有一种表达方法:在八进制数字前面要加一个横杠-,表示都匹配,如-007就相当于777,-006相当于666
-rwxrwxr-x&&&&2 sam&&&&&&adm&&&&&&&&&&&&&0 10月 31 01:01 http3.conf
-rw-rw-rw-&&&&1 sam&&&&&&adm&&&&&&&&&34890 10月 31 00:57 httpd1.conf
-rwxrwxr-x&&&&2 sam&&&&&&adm&&&&&&&&&&&&&0 10月 31 01:01 httpd.conf
drw-rw-rw-&&&&2 gem&&&&&&group&&&&&&&&4096 10月 26 19:48 sam
-rw-rw-rw-&&&&1 root&&&&&root&&&&&&&&&2792 10月 31 20:19 temp
# find . -perm 006
# find . -perm -006
./httpd1.conf
-perm mode:文件许可正好符合mode
-perm +mode:文件许可部分符合mode
-perm -mode: 文件许可完全符合mode
3、忽略某个目录
如果在查找文件时希望忽略某个目录,因为你知道那个目录中没有你所要查找的文件,那么可以使用-prune选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略。
如果希望在/apps目录下查找文件,但不希望在/apps/bin目录下查找,可以用:
$ find /apps -path &/apps/bin& -prune -o -print
4、使用find查找文件的时候怎么避开某个文件目录
比如要在/usr/sam目录下查找不在dir1子目录之内的所有文件
find /usr/sam -path &/usr/sam/dir1& -prune -o -print
find [-path ..] [expression] 在路径列表的后面的是表达式
-path &/usr/sam& -prune -o -print 是 -path &/usr/sam& -a -prune -o
-print 的简写表达式按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 || 类似如果 -path &/usr/sam& 为真,则求值 -prune , -prune 返回真,与逻辑表达式为真;否则不求值 -prune,与逻辑表达式为假。如果 -path &/usr/sam& -a -prune 为假,则求值 -print ,-print返回真,或逻辑表达式为真;否则不求值 -print,或逻辑表达式为真。
这个表达式组合特例可以用伪码写为
if -path &/usr/sam& then
&&&&&&&&&&-prune
&&&&&&&&&&-print
避开多个文件夹
find /usr/sam \( -path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -print
圆括号表示表达式的结合。
\ 表示引用,即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。
查找某一确定文件,-name等选项加在-o 之后
#find /usr/sam \(-path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -name &temp& -print
5、使用user和nouser选项
按文件属主查找文件,如在$HOME目录中查找文件属主为sam的文件,可以用:
$ find ~ -user sam -print
在/etc目录下查找文件属主为uucp的文件:
$ find /etc -user uucp -print
为了查找属主帐户已经被删除的文件,可以使用-nouser选项。这样就能够找到那些属主在/etc/passwd文件中没有有效帐户的文件。在使用-nouser选项时,不必给出用户名; find命令能够为你完成相应的工作。
例如,希望在/home目录下查找所有的这类文件,可以用:
$ find /home -nouser -print
6、使用group和nogroup选项
就像user和nouser选项一样,针对文件所属于的用户组, find命令也具有同样的选项,为了在/apps目录下查找属于gem用户组的文件,可以用:
$ find /apps -group gem -print
要查找没有有效所属用户组的所有文件,可以使用nogroup选项。下面的find命令从文件系统的根目录处查找这样的文件
$ find / -nogroup-print
7、按照更改时间或访问时间等查找文件
如果希望按照更改时间来查找文件,可以使用mtime,atime或ctime选项。如果系统突然没有可用空间了,很有可能某一个文件的长度在此期间增长迅速,这时就可以用mtime选项来查找这样的文件。
用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。
希望在系统根目录下查找更改时间在5日以内的文件,可以用:
$ find / -mtime -5 -print
为了在/var/adm目录下查找更改时间在3日以前的文件,可以用:
$ find /var/adm -mtime +3 -print
find / -name &*.php& | xargs grep &yaogang&& 查找当前目录方便中,内容有“yaogang&的,列表显示!
./ -mtime -2 -name '*.php' 查找当前目录 2天内,被修改过的PHP文件,包括添加!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:57699次
积分:1163
积分:1163
排名:千里之外
原创:34篇
转载:82篇
(3)(2)(1)(2)(7)(3)(2)(3)(22)(14)(11)(1)(8)(2)(1)(1)(2)(1)(4)(1)(3)(8)(3)(5)(10)新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
丰衣足食, 积分 861, 距离下一级还需 139 积分
论坛徽章:0
一台redhat as5.3 机器
文件系统& && && && &&&容量&&已用 可用 已用% 挂载点
/dev/sda7& && && && &&&19G&&6.1G& &12G&&34% /var
然后进入 /var/log/ 删除一个最大的文件&&rm -f filename
文件系统& && && && &&&容量&&已用 可用 已用% 挂载点
/dev/sda7& && && && &&&19G&&6.1G& &12G&&34% /var
看到没,没有任何变化,但是用
du -sh /var
433M& & /var
百思不得其解,难道是rm -f 删除的文件还在缓冲区里面,incode 没有删除,但是df -lh 不应该统计出来啊!
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
家境小康, 积分 1114, 距离下一级还需 886 积分
论坛徽章:1
这就是du和df的区别:
稍有积蓄, 积分 225, 距离下一级还需 275 积分
论坛徽章:0
回复 #2 寂寞烈火 的帖子
同谢,又学了一招。
丰衣足食, 积分 861, 距离下一级还需 139 积分
论坛徽章:0
丰衣足食, 积分 861, 距离下一级还需 139 积分
论坛徽章:0
现在的问题是怎么清除我删除的文件节点信息。
稍有积蓄, 积分 324, 距离下一级还需 176 积分
论坛徽章:2
LS的你的第2个shell太恶毒了
丰衣足食, 积分 861, 距离下一级还需 139 积分
论坛徽章:0
aixue175 该用户已被删除
提示: 作者被禁止或删除 内容自动屏蔽
论坛徽章:0
老生常談問題了。
你刪除那個程序使用中的紀錄文件?請重起該程序,這樣使用中的文件會被關閉,實際空間才會釋放出來
富足长乐, 积分 5671, 距离下一级还需 2329 积分
论坛徽章:0
原帖由 寂寞烈火 于
11:04 发表
这就是du和df的区别:
好好学习一下,感谢
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处rm [选项] 文件
删除一个目录中的一个或多个文件或目录,
如果没有使用-r选项,则rm不会删除目录。
如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。
命令参数:
-f, --force
忽略不存在的文件,从不给出提示。
-i, --interactive
进行交互式删除
-r, -R, --recursive
指示rm将参数中列出的全部目录和子目录均递归地删除。
-v, --verbose
详细显示进行的步骤
显示此帮助信息并退出
输出版本信息并退出
删除文件file,系统会先询问是否删除。
输入rm test.log
命令后,系统会询问是否删除,输入y后就会删除文件,不想删除则数据n。
rm test.log
强行删除file,系统不再提示。
rm -f test.log
删除任何.log文件;删除前逐一询问确认
rm -i *.log
将 test1子目录及子目录中所有档案删除
rm -r test1
rm -rf test2命令会将 test2 子目录及子目录中所有档案删除,并且不用一一确认
要删除第一个字符为"-"的文件
rm -- -foo
自定义回收站功能
模拟回收站的效果,
即删除文件的时候只是把文件放到一个临时目录中,
这样在需要的时候还可以恢复过来。
myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
阅读(...) 评论() &Linux 删除文件 rm 命令使用实例
使用这个rm -rf删除文件的时候一定要格外小心,linux没有回收站的。
直接rm就可以了,不过要加个参数-f 即:rm -f 文件路径
-f 就是直接强行删除,不作任何提示的意思
删除文件使用实例:
rm -f /var/log/httpd/access.log
将会强制删除/var/log/httpd/access.log这个文件
删除目录使用实例:
rm -rf /var/log/httpd/access
将会删除/var/log/httpd/access目录以及其下所有文件、文件夹
需要提醒的是:使用这个rm -rf的时候一定要格外小心,linux没有回收站的
当然,rm还有更多的其他参数和用法,man rm就可以查看了
如果您喜欢本文请分享给您的好友,谢谢!如想浏览更多更好的内容,请登录:
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)}

我要回帖

更多关于 朋友网贷不还我被骚扰 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信