LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1194|回复: 9

如何根据find返回的记录自动的删除文件

[复制链接]
发表于 2006-7-25 10:39:49 | 显示全部楼层 |阅读模式
# find / -name student.txt
/opt/mysql/data/student.txt
    。
    。
    。
可不可以用一条命令删除所有搜索到的文件?请高手赐教
发表于 2006-7-25 12:30:03 | 显示全部楼层
there is a "-exec" opt, please read the man page.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-26 11:24:30 | 显示全部楼层
手册上这么说的:
-exec<执行指令>  假设find指令的回传值为True,就执行该指令。
可是怎么把查找到的文件删除掉啊,能写个脚本吗?
回复 支持 反对

使用道具 举报

发表于 2006-7-26 12:02:23 | 显示全部楼层
find ... | xargs rm -rf
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-26 16:51:27 | 显示全部楼层
1ball,你太棒了
回复 支持 反对

使用道具 举报

发表于 2006-7-27 06:20:22 | 显示全部楼层
doesn't have to use xargs..
  1. find stuff -exec rm -fr {} \;
复制代码
回复 支持 反对

使用道具 举报

发表于 2006-8-6 16:52:23 | 显示全部楼层
find / -name student.txt -exec rm {} \;
回复 支持 反对

使用道具 举报

发表于 2006-8-13 03:40:10 | 显示全部楼层
find ... | xargs rm -rf
这个最好加上{}
如.find / -name 'student.txt' |xargs rm -rf {}


ps ax | grep "$PROCESS_NAME" | awk '{print $1}' | xargs -i kill {} 2&>/dev/null
这样杀进程.

xargs是个很好的命令,简直就是为人民服务的好帮手.


假如你的这个目录下的文件很多,想rm -f *
但是报错说目录下的文件过多.无法删除.
那最好的方法就是 find /yourdir -name * |xargs -0 rm -fR {}
回复 支持 反对

使用道具 举报

发表于 2006-8-13 15:39:16 | 显示全部楼层
请问为什么最好要加{}

以前使用的时候都没有加的
回复 支持 反对

使用道具 举报

发表于 2006-8-13 17:13:55 | 显示全部楼层
在我的Debian上,直接
find path -name filename -delete
就行了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表