首页 > 其他分享 >文件查找

文件查找

时间:2024-11-18 08:45:57浏览次数:1  
标签:文件 kylin 查找 test txt root find xu

作用: 根据不同的文件类型查找出想要的文件

语法结构:
		 find 在哪里找 找什么类型的   # 格式1
		 find  /data  f            
		 find  /data  按照名称查找   # 格式2

【1】、常用文件类型

文件类型:
f   # 表示普通文件 
d   # 表示目录
l   # 表示链接文件
c   # 表示字节设备 
b   # 表示块设备 /dev/sda  磁盘 光驱 


1、/dev/urandom

字节设备:
urandom #作用 不停的往外吐 没啥用
[root@oldboyedu ~]# ll /dev/urandom 
crw-rw-rw- 1 root root 1, 9 11月 16 12:29 /dev/urandom

2、/dev/null

/dev/null #作用 可以将命令的结果定向到此文件 空 类似黑洞 只吃不拉
[root@oldboyedu ~]# echo hehe > /dev/null
[root@oldboyedu ~]# cat /dev/null
[root@oldboyedu ~]# echo hehe >> /dev/null 
[root@oldboyedu ~]# cat /dev/null

作用: 写脚本执行命令的时候,会根据自己想要输出的内容来定义输出格式。
[root@oldboyedu ~]# ping -c1 -W1 www.sina.com &>/dev/null
[root@oldboyedu ~]# echo $?
0
[root@oldboyedu ~]# ping -c1 -W1 www.sinsssssssssa.com &>/dev/null
[root@oldboyedu ~]# echo $?
2
# shell脚本
ping -c1 -w1 www.baidu.com &>/dev/null

if [ $? -eq 0 ]; then
        echo "百度在线"
else
        echo "百度不在线"
fi

3、/dev/zero

[root@kylin-xu ~]# dd if=/dev/zero of=./1.txt bs=1M count=1000
记录了1000+0 的读入
记录了1000+0 的写出
1048576000字节(1.0 GB,1000 MiB)已复制,16.5751 s,63.3 MB/s
[root@kylin-xu ~]# ll 1.txt 
-rw-r--r-- 1 root root 1048576000 11月 13 10:43 1.txt
[root@kylin-xu ~]# ll 1.txt  -h
-rw-r--r-- 1 root root 1000M 11月 13 10:43 1.txt
dd  # 命令
if  # input file  输入文件 /dev/zero输入内容
of  # ouput file  输出到哪个文件 1.txt 中
bs  # 每次读取的大小 bs=1M 每次在/dev/zero中读取1M的数据
count # 总共读多少次 
#通过dd生成一个10M的文件
[root@oldboyedu ~]# dd if=/dev/zero  of=./2.txt bs=1M count=10

【2】、查找文件

find文件查找
作用: 查找文件
1.查找大文件
2.小文件多的 
  inode号,一个文件最少占用一个inode和一个block
  相当于一本书的索引,一本书的目录有限制的 比如200个
3.模糊查找
4.按照时间查找
查看inode使用
[root@kylin-xu ~]# df -i
文件系统                  Inodes 已用(I)  可用(I) 已用(I)% 挂载点
devtmpfs                  246341     475   245866       1% /dev
tmpfs                     250387       1   250386       1% /dev/shm
tmpfs                     250387     721   249666       1% /run
tmpfs                     250387      17   250370       1% /sys/fs/cgroup
/dev/mapper/klas-root   20066304  124968 19941336       1% /
tmpfs                     250387      12   250375       1% /tmp
/dev/mapper/klas-backup  9795584       8  9795576       1% /backup
/dev/sda1                 524288     340   523948       1% /boot
tmpfs                     250387       6   250381       1% /run/user/0

1、安装文件类型进行查找

find:
	  find  ./ -type f  # 按照文件类型查找
	  find ./ -type f -o -type d # 使用或者关系查找
	  
-o  or # 或者
-a  and# 并且 默认就是并且关系
案例1.find按照文件类型查找出所有的普通文件
[root@kylin-xu find]# find ./ -type f 
./test-1/1.txt
./test-1/2.txt
./test-1/3.txt
./test-2/1.TXT
./test-2/2.TXT
./test-2/3.TXT
./a.txt
./b.txt

案例2.查找出所有的目录文件
[root@kylin-xu find]# find ./ -type d
./
./test-1
./test-2
./test-3

其他类型查找
find / -type l
find / -type b
find / -type c

案例3.查找出文件或者是目录的
[root@kylin-xu find]# find ./ -type f -o -type d
./
./test-1
./test-1/1.txt
./test-1/2.txt
./test-1/3.txt
./test-2
./test-2/1.TXT
./test-2/2.TXT
./test-2/3.TXT
./a.txt
./b.txt
./test-3

2、按照文件名字进行查找

案例1.查找出文件名称1.txt的
[root@kylin-xu find]# find ./ -name 1.txt
./test-1/1.txt

案例2.不区分大小写使用 -iname
[root@kylin-xu find]# find ./ -iname 1.txt
./test-1/1.txt
./test-2/1.TXT

案例3.使用通配符 * 表示所有,?表示一个字符
[root@kylin-xu find]# find ./ -name "[21].txt"
./test-1/1.txt
./test-1/2.txt
[root@kylin-xu find]# find ./ -name "[0-9].txt"
./test-1/1.txt
./test-1/2.txt
./test-1/3.txt
[root@kylin-xu find]# find ./ -name "[0-9a-Z].txt"
./test-1/1.txt
./test-1/2.txt
./test-1/3.txt
./a.txt
./b.txt
[root@kylin-xu find]# find ./ -name "?.txt"
./test-1/1.txt
./test-1/2.txt
./test-1/3.txt
./a.txt
./b.txt
[root@kylin-xu find]# find ./ -name "*.*"
./
./test-1/1.txt
./test-1/2.txt
./test-1/3.txt
./test-2/1.TXT
./test-2/2.TXT
./test-2/3.TXT
./a.txt
./b.txt
./12.txt

3、find使用并且和或者查找文件

案例1.查找出普通文件并且名称为1.txt的
[root@kylin-xu find]# find ./ -type f -a -name 1.txt
./test-1/1.txt

案例2.查找出目录并且名称是test-1
[root@kylin-xu find]# find ./ -type d -a -name test-1
./test-1

案例3.查找出文件名称*.txt 或者 *.log
[root@kylin-xu find]# find ./ -name "*.txt" -o -name  "*.log"
./test-1/1.txt
./test-1/2.txt
./test-1/3.txt
./a.txt
./b.txt
./12.txt

案例4.按照深度等级查找
[root@kylin-xu find]# find  ./ -maxdepth 1 -name "*.txt" -o -name  "*.log" 
./a.txt
./b.txt
./12.txt

4、按照inode号查找

[root@kylin-xu find]# ll -i
总用量 0
102615330 -rw-r--r-- 1 root root  0 11月 13 11:36 12.txt
102615328 -rw-r--r-- 1 root root  0 11月 13 11:08 a.txt
102615329 -rw-r--r-- 1 root root  0 11月 13 11:08 b.txt
  1781175 drwxr-xr-x 2 root root 84 11月 13 11:55 test-1
 34853858 drwxr-xr-x 2 root root 45 11月 13 11:08 test-2
 67723713 drwxr-xr-x 2 root root  6 11月 13 11:08 test-3
[root@kylin-xu find]# find ./ -inum 102615330
./12.txt
[root@kylin-xu find]# find ./ -inum 102615330 | xargs rm
[root@kylin-xu find]# ll
总用量 0
-rw-r--r-- 1 root root  0 11月 13 11:08 a.txt
-rw-r--r-- 1 root root  0 11月 13 11:08 b.txt
drwxr-xr-x 2 root root 84 11月 13 11:55 test-1
drwxr-xr-x 2 root root 45 11月 13 11:08 test-2
drwxr-xr-x 2 root root  6 11月 13 11:08 test-3

5、find按照大小查找文件

语法格式:
		 find ./ -size 10M  # 查找出等于10M的文件
		 find ./ -size +10M # 查找出大于10M的文件
		 find ./ -size -10M # 查找出小于10M的文件
案例1.查找出大于10M的文件 
[root@kylin-xu find]# find ./ -size +10M 
./1.txt

案例2.查找出等于10M的文件
[root@kylin-xu find]# find ./ -size 10M 
./2.txt

案例3.查找出小于10M的文件
[root@kylin-xu find]# find ./ -size -10M 

案例4.查找出等于10M或者大于10M的文件
[root@kylin-xu find]# find ./ -size 10M -o -size +10M
./1.txt
./2.txt

# 注意默认就是并且关系可以省略 -a  -o不能省略
案例5.查找出普通文件并且大于10M的文件
[root@kylin-xu find]# find ./ -type f  -o -size +10M

案例6.查找出文件大于5M 并且小于15M的
[root@kylin-xu find]# find ./ -type f  -a  -size +5M -a -size  -15M
./2.txt

案例7.查找出大于1M的目录 #一般来说不会存在,如果目录大于1M 说明下面已经存在5万+的小文件
[root@kylin-xu find]# find / -type d -size +1M

统计目录及下所有大小
[root@kylin-xu find]# du /etc/ -sh
25M     /etc/

6、按照时间查找文件

语法格式:
三种时间:
atime: 访问时间
mtime: 文件修改时间
ctime: 文件属性修改时间
		 find  ./ -mtime +7   # 7天前修改过的文件
		 find ./ -mtime  -7   # 7天内修改过的文件
		 find ./ -mtime  0     # 24小时内被修改过的文件
[root@kylin-xu find]# stat 1.txt 
  文件:“1.txt”
  大小:1048576000      块:2048000    IO 块:4096   普通文件
设备:fd00h/64768d      Inode:102615330   硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2024-11-13 12:03:00.507104942 -0300
最近更改:2024-11-13 12:03:11.399051736 -0300
最近改动:2024-11-13 12:03:11.399051736 -0300
创建时间:-
案例1.查找24小时内被修改过的文件
find / -mtime 0

案例2.查找出修改时间大于30天前的文件
find / -type f -mtime +30

案例3.查找出修改时间大于30天前所有的文件
find / -mtime +30
[root@kylin-xu find]# date -s 20080302
2008年 03月 02日 星期日 00:00:00 -03
[root@kylin-xu find]# touch 2008{1..3}.txt
[root@kylin-xu find]# mkdir  2008{1..3}
[root@kylin-xu find]# ntpdate ntp2.aliyun.com
17 Nov 12:02:02 ntpdate[237947]: step time server 203.107.6.88 offset +527428869.143752 sec
[root@kylin-xu find]# find ./ -mtime +30
./
./20081.txt
./20082.txt
./20083.txt
./20081
./20082
./20083

时间查找的作用:
1.大于7天或者30天前的文件不用了需要备份或者删除
2.系统中毒 文件被篡改。

笔试题: 查找/data目录下所有的普通文件修改时间大于30天前的然后删除

【3】、将find的结果交给其他命令

1、xargs

案例1.找出文件名称3.txt的然后查看里面的内容
[root@kylin-xu find]# find ./ -name 3.txt | xargs cat
aaa
为什么不用ll 因为xargs后面所有的别名失效。


# xargs: 将前面命令执行的结果 甩到所有命令的最后面、
# xargs可以格式化输出 按n列的方式 默认以空格分隔
# |xargs -n1  # 按1列的方式输出内容

案例2.查找名称3.txt的文件然后删除
[root@kylin-xu find]# find ./ -name 3.txt | xargs rm 

案例3.查找名称1.txt的文件然后复制到/opt目录
[root@kylin-xu find]# find ./ -name 1.txt | xargs -i cp {} /opt/
[root@kylin-xu find]# ll /opt/1.txt 
-rw-r--r-- 1 root root 1048576000 11月 17 12:22 /opt/1.txt

案例4.查找名称1.txt 然后移动到/tmp目录
[root@kylin-xu find]# find ./ -name 1.txt | xargs -i mv {} /tmp/

案例5.拷贝多个文件到/opt目录
find ./ -name "*.txt" | xargs -i cp {} /opt

2、-exec

案例1.交给cat命令
[root@kylin-xu find]# find ./ -name 1.log -exec cat {} \;
aaa

案例2.交给cp动作
[root@kylin-xu find]# find ./ -name 1.log -exec cp  {} /opt \;
[root@kylin-xu find]# ll /opt/1.log 
-rw-r--r-- 1 root root 4 11月 17 12:31 /opt/1.log

案例3.交给rm动作
[root@kylin-xu find]# find ./ -name *.log -exec rm  {}  \;
[root@kylin-xu find]# find ./ -name *.log 
[root@kylin-xu find]# 

案例4.查找出所有大写的.TXT结尾的文件 然后打包成test.tar.gz
[root@kylin-xu find]# find ./ -name *.TXT   -exec tar -zcvf test.tar.gz {} \;
./test-2/1.TXT
./test-2/2.TXT
./test-2/3.TXT
[root@kylin-xu find]# tar tf test.tar.gz 
./test-2/3.TXT

[root@kylin-xu find]# find ./ -name *.TXT | xargs tar zcvf a.tar.gz
./test-2/1.TXT
./test-2/2.TXT
./test-2/3.TXT
[root@kylin-xu find]# tar tf a.tar.gz 
./test-2/1.TXT
./test-2/2.TXT
./test-2/3.TXT
# 如果使用 -exec 去进行压缩,他只会压缩最后查找的内容
# 使用 xargs 进行压缩,就是全部完整的内容,因此在进行压缩操作时我们不会使用 -exec 参数

3、``或$()

案例1.将查找到的文件交给cp命令
cp `find ./ -name "*.txt"`  /opt


案例2.将查找到的文件交给ll命令
ll $(find ./ -name "1.txt")

案例3.交给cat命令
cat `find ./ -name "2.txt"`

案例4.拷贝查找到的所有文件到/root
cp $(find ./ -size +10K) /root

案例5.查找到的文件交给rm命令
rm -f $(find ./ -size -10M)

标签:文件,kylin,查找,test,txt,root,find,xu
From: https://www.cnblogs.com/xuruizhao/p/18551624

相关文章

  • 【漏洞复现】用友 YonBIP高级版 yonbiplogin 任意文件读取漏洞
    免责声明:        本文旨在提供有关特定漏洞的信息,以帮助用户了解潜在风险。发布此信息旨在促进网络安全意识和技术进步,并非出于恶意。读者应理解,利用本文提到的漏洞或进行相关测试可能违反法律或服务协议。未经授权访问系统、网络或应用程序可能导致法律责任或严......
  • Microsoft Visual Studio VS dumpbin使用查看.obj、.lib、.dll、.exe文件头、段函数
    前言全局说明dumpbin是VS自带的MicrosoftCOFF二进制文件转换器,它显示有关通用对象文件格式(COFF)二进制文件的信息。可以使用dumpbin检查COFF对象文件、标准COFF对象库、可执行文件和动态链接库等。被查看的文件名后缀可以为:.obj、.lib、.dll、.exe一、说明正确情况下,安......
  • 批量提取当前文件夹pdf书籍目录
    importfitz#PyMuPDFimportpandasaspdimportos#获取当前文件夹中所有的PDF文件pdf_files=[fforfinos.listdir('.')iff.endswith('.pdf')]#提取目录信息的函数defextract_toc(toc,toc_list,level=0):foritemintoc:#确保目录项至少......
  • C#UI自动化实现微信自动搜索聊天文件并发送
    用到了两个程序包,FlaUI .Core,FlaUI.UIA3,在VS的扩展里可以下载安装这两个程序包,UI自动化是用来实现自动测试程序流程的,减少人工测试的成本。有需要源程序的私信我。获取微信窗口句柄 voidGetWxHandle(){varprocess=Process.GetProcessesByNam......
  • Typora右键打开文件夹/设置右键打开方式/Windows右键管理器
    Typora右键打开文件夹/设置右键打开方式/Windows右键管理器/管理右键/编辑右键_typeoa添加到右键打开菜单中-CSDN博客首先下载一个右键管理器ContextMenuManager下载地址:GitHub:Releases·BluePointLilac/ContextMenuManager(github.com)Gitee:ContextMenuManager发......
  • 网站文件修改数据库,安全高效地修改网站数据库中的文件信息
    备份数据库:在进行任何数据库操作之前,务必先备份整个数据库。这可以通过phpMyAdmin、命令行工具或其他数据库管理软件来实现。备份文件应妥善保存,以防万一出现问题时可以恢复。登录数据库管理工具:使用phpMyAdmin或类似的数据库管理工具登录到您的数据库。输入正确的用户名和密......
  • 网站数据库如何修改config.php,如何在网站配置文件中修改数据库连接信息
    修改网站的数据库连接信息可以确保网站能够正确连接到数据库。以下是具体步骤:备份文件:在修改前,备份当前的config.php文件,确保数据安全。使用FTP工具(如FileZilla)下载config.php文件到本地。编辑文件:使用代码编辑器(如SublimeText、VisualStudioCode)打开config.php文......
  • cmake系列-怎么在构建C++库文件时动态的选择构建动态库还是静态库
    在之前我们介绍的内容里,关于构建动态库还是静态库都是在CMakeLists.txt里指定的,那如果一个解决方案原来是构建动态库,然后因为某些原因又希望构建静态库了,那岂不是还要修改CMakeLists.txt,对于平时用的构建系统来说好像还真的是需要修改,哈哈,但是cmake确实有方案能够在不用修改......
  • starrycan的pwn随笔——ELF文件和延迟绑定机制
    一.ELF文件结构0x01什么是ELF文件1.linux环境中,二进制可持性文件的类型是ELF(ExecutableandLinkableFormat)文件。类似windows下的exe2.elf文件的格式比较简单,我们需要了解的就是elf文件中的各个节、段等概念3.程序elf的基本信息存在于elf的头部信息中,这些信息包括指令的运......
  • 关于HDFS路径文件夹名称的问题
    问题发现​ 最开始的需求:修改/origin_data/gmall/db目录下所有以inc结尾的文件夹里的文件夹(名称为2024-11-15)修改为2020-6-14问gpt写了个脚本:#!/bin/bash#遍历/origin_data/gmall/db下所有以"inc"结尾的文件夹fordirin$(hdfsdfs-ls/origin_data/gmall/db|grep......