Linux Find命令(学习心得+转载)
时间:2010-07-23 来源:yemuda
要对一个拥有好几千/万个文件的目录进行筛选,只提取*.data文件,并且要求删除<=10k的文件*.data
,将最后剩下的文件进行打包,网上搜了一下,发现find命令挺强大的,再查了一下shell的for循环语句,顺利将功能完成,快速简单,命令如下:
1.find 筛选文件
I: find ./destDirPath/ -name "*[^.data]" #筛选出任何不是*.data文件
II: find ./destDirPath/ -name "*.data" -size +10k #筛选出size>10k的*.data文件
注意,第二条size开关后面的+/-号,可以控制文件大于/小于指定大小
2.shell脚本:利用for循环语句完成功能
#!bin/bash
for DataFile in $(find ./destDirPath/ -name "*[^.data]")
do
#找到任何不是*.data的文件,并删除之
rm ./$DataFile
done
for DataFile in $(find destDirPath/ -name *.data -size -10k)
do
#筛选出任何size<10的文件,并删除之
rm ./$DataFile
done
for DataFile in $(find ./server2-data/ -name *.data -size 10k)
do
#筛选出任何size=10k的文件,并删除之
rm ./$DataFile
done
呵呵,网上搜了下,并马上写出来,赞扬下自己,第一次写真正的shell脚本,nice~~~
3.tar打包命令
I: tar -czvf ./destDirPath.tar.gz ./destDirPath #压缩
其中-c表示创建压缩包,-z表以gzip方式压缩,-v表显示压缩信息,-f后面一定要跟着压缩的打包名字
II:tar -xzvf ./destDirPath.tar.gz
其中-x表示解压缩
=============华丽丽分割线,转载如下==============
我们经常要在日常的工作中查找文件,要说linux下最强大的文件查找工具,非find莫属。find可以从文件名、读取修改时间、大小、类型等等来筛选 文件,可以完成日常几乎所有的查找需求。 来看一个简单的例子:
,将最后剩下的文件进行打包,网上搜了一下,发现find命令挺强大的,再查了一下shell的for循环语句,顺利将功能完成,快速简单,命令如下:
1.find 筛选文件
I: find ./destDirPath/ -name "*[^.data]" #筛选出任何不是*.data文件
II: find ./destDirPath/ -name "*.data" -size +10k #筛选出size>10k的*.data文件
注意,第二条size开关后面的+/-号,可以控制文件大于/小于指定大小
2.shell脚本:利用for循环语句完成功能
#!bin/bash
for DataFile in $(find ./destDirPath/ -name "*[^.data]")
do
#找到任何不是*.data的文件,并删除之
rm ./$DataFile
done
for DataFile in $(find destDirPath/ -name *.data -size -10k)
do
#筛选出任何size<10的文件,并删除之
rm ./$DataFile
done
for DataFile in $(find ./server2-data/ -name *.data -size 10k)
do
#筛选出任何size=10k的文件,并删除之
rm ./$DataFile
done
呵呵,网上搜了下,并马上写出来,赞扬下自己,第一次写真正的shell脚本,nice~~~
3.tar打包命令
I: tar -czvf ./destDirPath.tar.gz ./destDirPath #压缩
其中-c表示创建压缩包,-z表以gzip方式压缩,-v表显示压缩信息,-f后面一定要跟着压缩的打包名字
II:tar -xzvf ./destDirPath.tar.gz
其中-x表示解压缩
=============华丽丽分割线,转载如下==============
我们经常要在日常的工作中查找文件,要说linux下最强大的文件查找工具,非find莫属。find可以从文件名、读取修改时间、大小、类型等等来筛选 文件,可以完成日常几乎所有的查找需求。 来看一个简单的例子:
find /tmp/ -name 'galeki*'
意思就是在/tmp目录下找出以“galeki”开头的文件,-name指出是对文件名进行筛选,是不是很简单明了?除了文件名,find还有 更强大的筛选条件:
1.时间:
2.大小:
参数 | 意义 |
-atime n | 上一次存取时间在n*24小时前以内的文件 |
-ctime n | 上一次状态改变在n*24小时前以内的文件 |
-mtime n | 上一次修改时间在n*24小时前以内的文件 |
-newer file | 比file所指的文件还要新的文件 |
参数 | 意义 |
-size n[bkMG] | 大小为n(b为比特,k为KB,M为MB,G为GB)的文件 |
3.所有者:
参数 | 意义 |
-user name | 所有者用户名称是name的文件 |
-group name | 所有者用户组群名称是name的文件 |
例子:
find /tmp/ -name 'sess*' -mtime 1 #在/tmp目录下找到 所有以'sess'开头、并且在一个小时以内修改过的文件
find ./ -name '*.zip' -size 546k #在当前目录下找到所有546KB的zip压缩包文件
find /tmp/ -user 'galeki' #在/tmp目录下找到所有所有者为galeki的文件 另外,还可以用"+"、"-"来进一步修饰时间和大小的条件:
find ./ -name '*.zip' -size 546k #在当前目录下找到所有546KB的zip压缩包文件
find /tmp/ -user 'galeki' #在/tmp目录下找到所有所有者为galeki的文件 另外,还可以用"+"、"-"来进一步修饰时间和大小的条件:
find src/ -mtime +2 #找出src目录下上一次修改时间在2天以前的文件
find download/ -size +50M #在download目录下找出大于50M的文件 光找出文件还不够,我们还要对找出的文件进行处理才有意义,一般来讲可以把find的查找结果传递给其他的命令做进一步处理。find本身也提 供了许多处理动作的选项。 常用的处理动作:
find ./ -name '*.unk' -exec file {} \; #找出当前文件夹下后缀是unk的文件,并用file命令显示每个文件的文件类型
find download/ -size +50M #在download目录下找出大于50M的文件 光找出文件还不够,我们还要对找出的文件进行处理才有意义,一般来讲可以把find的查找结果传递给其他的命令做进一步处理。find本身也提 供了许多处理动作的选项。 常用的处理动作:
参数 | 意义 |
-print |
打印出找出文件的完整地址,一个文件一行 |
-delete |
删除找出的文件 |
-exec command {} \; |
对每一个找到的文件执行command命令, 并用文件替换"{}",“\;”是固定的结束符。 |
例子:
find /tmp/ -ctime +7 -delete #删除/tmp目录下一周以前创建的文件find ./ -name '*.unk' -exec file {} \; #找出当前文件夹下后缀是unk的文件,并用file命令显示每个文件的文件类型
相关阅读 更多 +