搜索文件


搜文件
which 搜索一些命令 (echo $PATH 这下面的路径下搜索)
whereis 在固定的地方可以模糊匹配
locate updatedb yum install -y mlocate (查的是后面生成的那个数据库) updatedb(更新库,系统每天更新一次)
find -type -name -mtime -atime -ctime
stat 命令可以查看三个time

6. linux下的链接文件
ln
软连接 硬连接


find /dir/ -mtime +10 10天前,-10就是10天后


ln -s /var/log/messages /tmp/1.txt 将前面连接到后面,左边是源,右边是目标
ls -l /tmp/1.txt
lrwxrwxrwx 1 root root 17 3月 17 20:50 /tmp/1.txt -> /var/log/messages

 


[root@vin tmp]# find . -type f -name 333 f代表文件
./222/333


[root@vin ~]# find / -type d -name 6666 d代表目录
/root/aaa/6666


find / -mtime +10十天前 创建更改时间大于10天的

find / -mtime -10 十天内

 

[root@vin ~]# stat aaa 查看目录或者文件的访问情况
File: "aaa"
Size: 4096 Blocks: 8 IO Block: 4096 目录
Device: 803h/2051d Inode: 131355 Links: 3
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-03-20 20:43:53.862554570 +0800 访问时间
Modify: 2015-03-20 20:43:52.720555425 +0800 创建或者更改时间
Change: 2015-03-20 20:43:52.720555425 +0800 更改inode或者原数据的时间


[root@vin 222]# stat .

 


touch 文件时能同时更改 mtime atime ctime

====================================================================================

find /data/log/ -mtime +30 -type f |xargs rm -f 就是查找到这个目录下30天前的文件删除掉,xargs就是借助的意思

find /data/log/ -mtime +30 -type f -exec rm {} ; 代表脱意的意思,和上条命令一样的效果


find /data/log/ -mtime +30 -type f |xargs -i mv {} {}.bak
给搜索到的文件一个一个地改名字。-i和{}意思就是把查找列出来的文件一行一行地去处理
比如搜索到的是1,就是1.bak 是2就是2.bak


[root@vin tmp]# ls
1.txt 2 3
[root@vin tmp]# find ./ -type f |xargs -i mv {} {}.bak =============
[root@vin tmp]# ls
1.txt 2.bak 3.bak

 

exec与xargs
exec 和find同时使用,意思是对这些查找的东西做一下什么操作
查找当前目录创建时间大于10天的文件并删除 :find . -mtime +10 -exec rm -rf {} ;
批量更改文件名: find ./* -exec mv {} {}_bak ;
find /var/log/ -type f -mtime +2 |xargs -i mv {} {}_bak

xargs 用在管道符号后面,可以和很多命令一起使用
find . -mtime +10 |xargs rm -rf
ls -d ./* |xargs -n1 -i{} mv {} {}_bak !!!!!!!

xargs 可以把多行变成一行 cat 1.txt|xargs


find . -type f -size -4k |xargs du -sh 查找大小为4k的文件

find . maxdepth 1 -type f -size -4k 在当前目录下第一层目录下查找

find . maxdepth 1 -type f -size -4k |xargs -i mv {} /tmp/

mv `find . maxdepth 1 -type f -size -4k` /tmp/ 和上面的意思一样
``这个符号的意思是,里面的结果作为前面那个命令的参数


要查找某个用户所使用的磁盘空间,在使用 find 命令的同时,您需要结合使用 du 命令以仅报告特定用户的磁盘使用情况。
$ find . -user root -type f -exec du -k {} ;
find . -user root -type f |xargs du -k

要获得摘要信息,换句话说,即某个特定用户所使用的总空间,您可以使用 awk 对该信息进行总计,并打印出最后的值:
$ find . -user root -type f -exec du -k {} ;|awk '{ s = s+$1 } END { print "Total used: ",s }'

 

对于组,您可以根据相同的原则对 find 使用 -group 选项:
$ find . -group mcslp -type f -exec du -k {} ;|awk '{ s = s+$1 } END { print "Total used: ",s }'


=============================================

linux下批量删除空文件(大小等于0的文件)的方法

find . -name "*" -type f -size 0c | xargs -n 1 rm -f

用这个还可以删除指定大小的文件,只要修改对应的 -size 参数就行,例如:
find . -name "*" -type f -size 1024c | xargs -n 1 rm -f

就是删除1k大小的文件。(但注意不要用 -size 1k,这个得到的是占用空间1k,不是文件大小1k的)。

查询出所有的空文件夹
find -type d -empty
删除文件

列出搜索到的文件
find . -name "shuaige.txt" -exec ls {} ;

批量删除搜索到的文件
find . -name "shuaige.txt" -exec rm -f {} ;

删除前有提示
find . -name "shuaige.txt" -ok rm -rf {} ;

删除当前目录下面所有 test 文件夹下面的文件
find . -name "test" -type d -exec rm -rf {} ;

//删除文件夹下面的所有的.svn文件
find . -name '.svn' -exec rm -rf {} ;

注:
1.{}和之间有一个空格
2.find . -name 之间也有空格
3.exec 是一个后续的命令,{}内的内容代表前面查找出来的文件

 

 

 

 

原文地址:https://www.cnblogs.com/chenshoubiao/p/4606376.html