关于find、PATH ----linux

本文围绕Linux系统展开,介绍了find命令的多个选项,如iname、uid等,通过命令操作示例展示其用法。还说明了制作简单脚本并使其在所有路径可执行的方法,即利用PATH变量。此外,讲解了每天在/opt下创建以日期命名目录的操作,涉及系统时间提取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

find、PATH
 问题

  1. 熟悉find选项:iname、uid、gid、user、group、nouser、nogroup、maxdepth、inum
  2. 制作几个简单的脚本文件,实现在所有路径都能执行
  3. 每天在/opt下创建一个目录命名为mydir-YYYYmmdd
     方案
    PATH变量的作用:将可执行程序拷贝到PATH变量的任意路径下,即可达到在任意路径下执行。
    当我们想得到命令的结果时可以,利用“$()”,例如:
    [root@svr5 ~]# echo hostname #输出只是hostname本身
    hostname
    [root@svr5 ~]# echo $(hostname) #输出hostname命令执行的结果
    svr5.tarena.com
    [root@svr5 ~]#
     步骤
    实现此案例需要按照如下步骤进行。
    步骤一:熟悉find选项
    -iname选项:根据名称查找,忽略大小写。
    命令操作如下所示:
    [root@localhost ~]# find /etc/ -name PASSWD
    [root@localhost ~]# find /etc/ -iname PASSWD
    /etc/pam.d/passwd
    /etc/passwd
    -uid选项:根据uid查找,属于这个用户的文件。
    命令操作如下所示:
    [root@localhost ~]# useradd -u 500 student
    [root@localhost ~]# tail -1 /etc/passwd
    student❌500:500::/home/student:/bin/bash
    [root@localhost ~]# find /home/ -uid 500
    /home/student
    /home/student/.bash_logout
    /home/student/.gnome2
    /home/student/.bashrc
    /home/student/.bash_profile
    /home/student/.mozilla
    /home/student/.mozilla/plugins
    /home/student/.mozilla/extensions
    [root@localhost ~]#
    -gid 选项:根据gid查找,属于这个组的文件。
    命令操作如下所示:
    [root@localhost ~]# find /home/ -gid 500
    /home/student
    /home/student/.bash_logout
    /home/student/.gnome2
    /home/student/.bashrc
    /home/student/.bash_profile
    /home/student/.mozilla
    /home/student/.mozilla/plugins
    /home/student/.mozilla/extensions
    [root@localhost ~]#
    -user 选项:根据用户名查找,查找属于这个用户的。
    命令操作如下所示:
    [root@localhost ~]# find /home/ -user student
    /home/student
    /home/student/.bash_logout
    /home/student/.gnome2
    /home/student/.bashrc
    /home/student/.bash_profile
    /home/student/.mozilla
    /home/student/.mozilla/plugins
    /home/student/.mozilla/extensions
    [root@localhost ~]#
    -group 选项:根据组名查找,查找属于这个组的。
    命令操作如下所示:
    [root@localhost ~]# find /home/ -group student
    /home/student
    /home/student/.bash_logout
    /home/student/.gnome2
    /home/student/.bashrc
    /home/student/.bash_profile
    /home/student/.mozilla
    /home/student/.mozilla/plugins
    /home/student/.mozilla/extensions
    [root@localhost ~]#
    -nouser 选项:查找这个文件不属于任何用户的。
    命令操作如下所示:
    [root@localhost ~]# userdel student
    [root@localhost ~]# find /home/ -nouser
    /home/student
    /home/student/.bash_logout
    /home/student/.gnome2
    /home/student/.bashrc
    /home/student/.bash_profile
    /home/student/.mozilla
    /home/student/.mozilla/plugins
    /home/student/.mozilla/extensions
    [root@localhost ~]#
    -nogroup 选项:查找这个文件不属于任何组的。
    命令操作如下所示:
    [root@localhost ~]# find /home/ -nogroup
    /home/student
    /home/student/.bash_logout
    /home/student/.gnome2
    /home/student/.bashrc
    /home/student/.bash_profile
    /home/student/.mozilla
    /home/student/.mozilla/plugins
    /home/student/.mozilla/extensions
    [root@localhost ~]#
    -maxdepth 选项:限制目录查找的深度(最大层数),注意:当有多个条件是-maxdepth这个选项要放到最前面。
    命令操作如下所示:
    [root@localhost ~]# find /etc/ -maxdepth 1 -name passwd
    /etc/passwd
    [root@localhost ~]# find /etc/ -maxdepth 2 -name passwd
    /etc/passwd
    /etc/pam.d/passwd
    [root@localhost ~]#
    -inum 选项:根据文件i节点编号查找,i节点:在Linux系统中唯一标识一个文件的标志,它是一串数字。在linux系统中,一切皆为文件,那么一分区能够创建多少个文件数是有限的,它与这个分区的i节点的数量有关。i节点的数量大小也与该分区的大小有关。
    命令操作如下所示:
    [root@localhost ~]# tune2fs -l /dev/sda1 | grep “Inode count” //查看分区i节点总数
    Inode count: 51200
    [root@localhost ~]# ls –i //查看当前目录下的文件目录的i节点
    2621449 anaconda-ks.cfg 2621442 install.log 2621613 rv.txt 2621463 模板 2621462 下载
    2621618 bootetc 2621443 install.log.syslog 2623720 usrsbin 2621468 视频 2621466 音乐
    2621616 inittab 2621615 ipadd.txt 2621598 zhangsan 2621467 图片 2621461 桌面
    2621617 init.txt 2621614 ip.txt 2621464 公共的 2621465 文档
    [root@localhost ~]# find /root -inum 2621442
    /root/install.log
    [root@localhost ~]#
    步骤二:制作几个简单的脚本文件,实现在所有路径都能执行
    命令操作如下所示:
    [root@localhost opt]# echo “echo Hell Word” > /opt/hell.sh //制作脚本hell.sh
    [root@localhost opt]# cat /opt/hell.sh //此脚本运行,就是在屏幕输出一句话
    echo Hell Word
    [root@localhost opt]# /opt/hell.sh //以绝对路径执行,但缺没有执行权限
    -bash: /opt/hell.sh: 权限不够
    [root@localhost opt]# chmod +x /opt/hell.sh //添加执行权限x,此命令明日就会学习
    [root@localhost opt]# /opt/hell.sh //再次以绝对路径执行
    Hell Word
    [root@localhost opt]# hell.sh //测试任意路径下执行,显然不行
    -bash: hell.sh: command not found
    [root@localhost opt]# echo $PATH //查看PATH变量的值
    /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    [root@localhost opt]# cp /opt/hell.sh /bin //将脚本拷贝到PATH变量任意路径下
    [root@localhost opt]# hell.sh //测试任意路径下执行
    Hell Word
    [root@localhost opt]#
    步骤三:每天在/opt下创建一个目录命名为mydir-YYYYmmdd
    此题主要目的考察怎样提取系统时间命名,这样每天创建才不会重复。
    命令操作如下所示:
    [root@localhost ~]# echo date //echo命令直接写date,输出的为date
    date
    [root@localhost ~]# echo ( d a t e ) / / 要 想 要 输 出 命 令 的 结 果 需 加 上 , (date) //要想要输出命令的结果需加上, (date)//()
    2015年 01月 15日 星期四 16:09:53 CST
    [root@localhost ~]# echo ( d a t e + (date +%Y%m%d) // (date+(date +%Y%m%d)执行时才是我们想要的结果
    20150115
    [root@localhost ~]# ls /opt
    nsd.txt rh tarena01
    [root@localhost ~]# mkdir /opt/mydir-KaTeX parse error: Expected 'EOF', got '#' at position 34: …ot@localhost ~]#̲ ls /opt mydir-…(date +%Y%m%d)”这条命令写到,
    ~/.bash_profile文件里,每次开机都会执行。这不是本题目的重点可以不做。
<think>好的,我需要帮助用户了解如何使用Linuxfind命令按名称查找文件。首先,我应该回顾用户提供的引用内容,特别是引用[1]到[5],这些内容提到了find命令的基本用法、通配符、选项如-type和-name,以及一些高级用法如-exec和-prune。 用户的问题很明确:按名称查找文件。根据引用[1],使用-name选项加上通配符可以完成这个任务。例如,find /path -name "*.txt"查找所有txt文件。但需要注意,通配符的使用可能需要转义,或者放在引号内,避免shell扩展。 接下来,我需要确认是否需要区分大小写。如果用户需要不区分大小写的搜索,应该提到-iname选项,这在引用中没有提到,但属于常见用法,可能需要补充。但根据提供的引用,可能不需要超出引用范围的信息,但用户的问题可能隐含这个需求,所以可以简要提及。 另外,引用[3]提到find可以按文件名、类型等查找,所以需要强调-name的使用方法。例如,基本格式是find [路径] -name "模式"。同时,引用[4]给出了使用-exec结合grep的例子,说明可以与其他命令结合,但用户当前问题可能只需要查找,不需要后续操作,这部分可以作为高级技巧提到。 还需要注意路径的默认值,如引用[2]指出,不指定路径时,find会在当前目录查找。因此,在示例中应包含路径的说明,比如用户可以用.表示当前目录,或者绝对路径。 关于通配符的使用,引用[1]和[4]都提到了使用通配符,如"*.txt"或"passwd*",但要注意引号的使用,避免shell提前展开通配符。因此,在命令中应该用引号包裹模式,如-name "*.txt"。 此外,引用[5]提到了-prune选项,可以用于排除目录,这在查找文件时可能会有用,比如忽略某些子目录。但用户的问题可能不需要这个,不过可以作为一个扩展点放在相关问题里。 总结步骤:1. 确定查找路径;2. 使用-name选项加模式;3. 处理大小写问题;4. 结合其他选项如-type过滤类型;5. 通配符的正确使用。 现在需要将这些整理成一个清晰的回答,结构分步骤,并包含示例。同时,生成相关问题,如排除目录、大小写不敏感查找、结合其他命令等。</think>### Linux find命令按名称查找文件分步说明 1. **确定查找路径** 第一个参数指定搜索路径,默认当前目录 ```bash find . # 当前目录 find /var/log # 指定绝对路径 ``` 2. **使用`-name`选项** 匹配文件名时需用引号包裹通配符 ```bash find /etc -name "passwd" # 精确匹配 find ~ -name "*.jpg" # 模糊匹配 ``` 3. **处理大小写敏感问题** 使用`-iname`实现不区分大小写搜索 ```bash find /tmp -iname "error.log" # 匹配Error.log/ERROR.LOG等 ``` 4. **结合文件类型过滤** 通过`-type f`限定仅搜索文件(排除目录) ```bash find /home -type f -name ".bash*" ``` 5. **排除特定目录** 使用`-prune`跳过指定目录 ```bash find . -name "node_modules" -prune -o -name "*.js" -print ``` ### 典型示例 查找系统日志目录中所有`.log`后缀文件 ```bash find /var/log -type f -name "*.log" ``` 查找当前用户主目录下隐藏配置文件 ```bash find ~ -name ".*" -type f ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值