查找文件【TLCL】

  • locate

locate 执行快速的路径名数据库搜索,输出每个与指定子字符串相匹配的路径名。

locate bin/zip

locate 命令的数据库是updatedb命令创建的。

  • find

locate只能依据文件名查找文件,而find命令能基于各种各样的属性 搜索一个给定目录(以及它的子目录),来查找文件.

find ~            find 命令接收一个或多个目录名来执行搜索

find ~ -type d         -type d 限制了只搜索目录

find 命令支持的常见文件类型测试条件:

b  块特殊设备文件

c  字符特殊设备文件

d  目录

f  普通文件

l  符号链接

find ~ -type f -name "*.JPG" -size +1M | wc -l

-name后面跟通配符模式,根据文件名来搜索。

-size根据文件大小来搜索,+表示大于指定数的文件,-表示小于指定数的文件,没有则精确匹配这个数。

b 512 byte blocks【默认】

c bytes

w two byte words

k Kilobytes

M Megabytes

G Gigabytes

需要数值参数的 =情况下,可以应用以上“+”和“-”符号表示法。

-cmin n          匹配 【内容和属性】修改时间在n分钟前的文件和目录【“+”和“-”符号表示法】

-ctime n          匹配 【内容和属性】修改时间在n*24小时前的文件和目录【“+”和“-”符号表示法】

-cnewer file         匹配 【内容或属性】的最后修改时间晚于file的文件和目录

-mmin n          匹配 【内容】修改时间在n分钟前的文件和目录【“+”和“-”符号表示法】

-mtime n          匹配 【内容】修改时间在n*24小时前的文件和目录【“+”和“-”符号表示法】

-newer file          匹配 【内容】的最后修改时间晚于file的文件和目录

-user name          匹配 属于一个用户的文件和目录【用户名或用户ID来表示】

-group name          匹配 属于一个组的文件和目录【组名或组ID来表示】

-nouser            匹配 不属于一个有效用户的文件和目录

-nogroup           匹配 不属于一个有效的组的文件和目录

-iname pattern         跟-name相似,但不区分大小写。

-name pattern         用指定的通配符模式匹配的文件和目录。

-inum n            匹配inode号是n的文件。这对于找到某个特殊 inode 的所有硬链接很有帮助。

-samefile name        类似于-inum 测试条件。匹配和文件 name 享有同样 inode 号的文件。

-size n            匹配大小为n的文件

-empty            匹配 空文件和目录

-perm mode          匹配权限已经设置为指定的 mode的文件或目录【八进制或符号表示法】

-type c             匹配文件类型是 c 的文件

  • 操作符

-and/-a            两边的测试条件都是真【默认】

-or              两边的任一个测试条件为真

-not              Match if the test following the operator is false.

()                这用来控制逻辑计算的优先级,默认从左到右的顺序计算。

find ~ \( -type f -not -perm 0600 \) -or \( -type d -not -perm 0700 \)

expr1 -operator expr2

所有情况下,expr1总会执行,expr2要根据expr1的执行结果

expr1 的结果 操作符 expr2 is...
-and 总要执行
-and 从不执行
-or 从不执行
-or 总要执行
  • 预定义操作

-delete          删除当前匹配的文件

-ls            执行ls -dils命令,将结果输出到标准输出

-print           把匹配文件的全路径名输送到标准输出【默认】

-quit            一旦找到一个,退出

-exec command {} ;    {}是当前路径名的符号表示,分号是必要的分隔符表明命令的结束

-ok command {} ;     执行每个指定的命令之前, 会提示用户

花括号和分号对于 shell 有特殊含义,所以它们必须被引起来或被转义。

find ~ -type f -name ‘*.BAK‘ -delete  【用-print操作替换-delete,确认结果】
find ~ -type f -name ‘foo*‘ -exec ls -l ‘{}‘ ‘;‘

find ~ -type f -name ‘foo*‘ -exec ls -l ‘{}‘ + 【把末尾的分号改为+,把搜索结果结合为一个参数列表。】

xargs 命令从标准输入接受输入,并把输入转换为一个特定命令的参数列表。
find ~ -type f -name ‘foo*‘ -print | xargs ls -l

古怪名字处理方法:

find ~ -iname ‘*.jpg’ -print0 | xargs –null ls -l

使用这项技术,我们可以保证所有文件,甚至那些文件名中包含空格的文件,都能被正确地处理。

其他选项

-depth            先处理目录中的文件,再处理目录自身。

-maxdepth levels        进入目录树的最大深度

-mindepth levels        进入目录树的最小深度

-mount            指示find不要搜索挂载到其他文件系统上的目录

-noleaf            指示 find 程序不要基于自己在搜索 Unix 的文件系统的假设,来优化它的搜索。

原文地址:https://www.cnblogs.com/songdechiu/p/9966246.html

时间: 2024-10-18 21:10:03

查找文件【TLCL】的相关文章

Linux里如何查找文件内容

Linux查找文件内容的常用命令方法. 从文件内容查找匹配指定字符串的行: $ grep "被查找的字符串" 文件名例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件grep "thermcontact" */*.in 从文件内容查找与正则表达式匹配的行:$ grep –e “正则表达式” 文件名 查找时不区分大小写:$ grep –i "被查找的字符串" 文件名 查找匹配的行数:$ grep -c "被查找的字符串&quo

Linux 常用查找文件或者文件内容

举例树形图 .|-- test_dir| `-- dir_test_doc.text|-- test_dir2| |-- dir2_test_doc.txt| `-- dir2_test_doc2.txt|-- test_doc1.text`-- test_doc2.txt 2 directories, 5 files 1.查找文件内容的行: grep  "被查找的字符串"  文件名 例如: [[email protected] demo]# grep "doc1_conte

linux命令---查找文件中的内容

linux命令---查找文件中的内容 [[email protected] ~]$ cat 1.txt |egrep '123456789|second'-------匹配123456789或者second的行 first line:123456789012345678901234567890123456789012345678901234567890 second line:one two three four five six seven eight nine ten [[email pro

Linux查找文件

which 可以查找可执行文件的位置 ? 1 2 [email protected]:~$ which ping /bin/ping whereis whereis -m 可查询到命令的帮助文档在什么地方 ? 1 2 3 4 [email protected]:~$ whereis -m ls ls: /usr/share/man/man1/ls.1.gz [email protected]:~$ whereis -m pwd pwd: /usr/share/man/man1/pwd.1.gz

linux查找文件夹下的全部文件里是否含有某个字符串

查找文件夹下的全部文件里是否含有某个字符串 find .|xargs grep -ri "IBM" 查找文件夹下的全部文件里是否含有某个字符串,而且仅仅打印出文件名称 find .|xargs grep -ri "IBM" -l 1.正則表達式 (1)正則表達式一般用来描写叙述文本模式的特殊使用方法,由普通字符(比如字符a-z)以及特殊字符(称为元字符.如/.*.?等)组成. (2)基本元字符集及其含义 ^ :仅仅匹配行首. 如^a 匹配以a开头的行abc,a2e,

shell脚本中if与case使用,查找文件locate与find的使用,压缩,解压及归档工具

shell脚本中if与case使用 查找文件locate与find的使用 压缩,解压及归档工具 执行的循序  顺序执行  选择执行  循环执行 条件语句if if只是一个有含义的词,不能单独作为指令使用. 单分支 if 条件判断:then 条件为真的分支代码 fi 双分支 if 判断条件:then 条件为真的分支代码 else 条件为假的分支代码 fi 多分支 if 判断条件1, if-true elif 判断条件2,then if-ture elif 判断条件3,then if-ture ..

linux查找文件命令总结

使用电脑的时候,经常需要查找文件在Linux中,有很多方法可以做到这一点.国外网站LinuxHaxor总结了五条命令,你可以看看自己知道几条.大多数程序员,可能经常使用其中的2到3条,对这5条命令都很熟悉的人应该是不多的.1. findfind是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.find的使用格式如下:$ find <指定目录> <指定条件> <指定动作>- <指定目录>: 所要搜索的目录及其所有子目录.默认为当前目录.- <指

【转】Linux里如何查找文件内容

原文网址:http://blog.chinaunix.net/uid-25266990-id-199887.html Linux查找文件内容的常用命令方法. 从文件内容查找匹配指定字符串的行: $ grep "被查找的字符串" 文件名例子:在当前目录里第一级文件夹中寻找包含指定字符串的.in文件grep "thermcontact" */*.in 从文件内容查找与正则表达式匹配的行:$ grep –e “正则表达式” 文件名 查找时不区分大小写:$ grep –i

查找文件 CFileFind类

查找文件  CFileFind类  提取文件图标  显示大图标  显示小图标    一.查找文件   1.CFileFind类 //c:\mydir\myfile.txt GetFileName 获取文件名 myfile.txt GetFilePath 获取文件路径c:\mydir\myfile.txt GetFileTitle 获取文件标题 myfile Close 关掉搜索请求,释放掉占用资源 FindFile 搜索目录,成功返回非零值,否则返回0 FindNextFile 继FindFil