iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux基本操作实验(3)
  • 662
分享到

Linux基本操作实验(3)

操作Linux 2023-01-31 01:01:56 662人浏览 泡泡鱼
摘要

linux操作系统拥有非常多的文件,每种文件都代表一些特定的含义。如何快速的定位到你想要的文件,是一个非常复杂的过程。GNU提供了一个非常有效的工具findutil,(Http://www.gnu.org/software/findutil

linux操作系统拥有非常多的文件,每种文件都代表一些特定的含义。如何快速的定位到你想要的文件,是一个非常复杂的过程。GNU提供了一个非常有效的工具findutil,(Http://www.gnu.org/software/findutils/manual/html_mono/find.html#Run-Commands)findutil工具包中提供了如下一些工具:find, locate, updatedb,xargs.  其中find和locate经常用到。 find和xargs结合使用,可以根据相关的参数选项查找出你想要的文件并且对这些文件进行处理。locate和updatedb是结合使用。这里主要讲述find和xargs。使用find的命令比较简单,但是如何用好find还是首先需要了解find预设定的规则。这些规则来源于实际经验的总结,并被总结成find的选项,学好这些规则基本上就领悟了find的精粹。这些规则如下:

1)根据名称中含有特定内容和模式,如name后缀是.c就表示C源码程序。

2)连接到指定文件的连接文件。

3)在一定时间内更新过或者访问过

4)大小在一定时范围

5)指定的类型

6)指定的文件OWNER和GROUP

7)拥有一定的访问权限或者特殊的mode bits

8)包含含有一定模式的内容

9)文件目录下一定深度及以上所有。

GNU作为大牛们的作品,它除了你想到的功能之外,还给你带来意外,就是你通过find查出了一堆文件,你还要进行处理啊?你不能对着屏幕一个一个处理,所以GNU中find还有一些对应的ACTioN,通过这些ACTION你就一步到位直接处理这些文件了。find 用来查找文件,其命令基本格式:

find [文件路径] [文件规则表达式]  如find /usr/src –name “*.c”  -size +100k –print。 其中文件规则表达式是由四部分组成option tests actions operators 。 缺省actions是-print。 其中option通常放在前面。

常用的tests如下:

【1】NAME,根据名称 iname name分别表示是否忽略大小写。name后的文件名称,使用shell通配符模式。 还有一种方式,使用-path(ipath)和-wholename(iwholename)来指定文件全路径名,总觉得后面这种方式很奇怪,比喻说你都知道全路径名,你还要find什么呢?但这个通常结合-prun来排除路径,比较有用。当然实际中,它其实跟name比较相似。

find /usr/src "*.c" |more

[root@windriver-Machine shtest]# find ~ -name "*.txt" -print
/root/.subversion/README.txt
[root@windriver-machine shtest]# find . -name "*.txt" -print
./123abc/123abc.txt
[root@windriver-machine shtest]# find /etc -name "host*" -print
/etc/avahi/hosts
/etc/host.conf
/etc/hosts.allow
/etc/hosts.deny
/etc/hosts
[root@windriver-machine shtest]# find . -name "[a-z][a-z][0-9][0-9].txt" –print

[root@windriver-machine shtest]# find . -path '*.txt'
./123abc/123abc.txt

【2】File mode bits 根据文件权限有四种,-readable –writable –executable –perm,其中前三种不是POXIS标准,最后一种perm 后面跟数字前还有两个符号”-“和“/”号。其中/是GNU扩展。区别这两个符号的作用很简单,就是缺省是精确匹配。加了-表示模糊匹配,就是不管其它位是什么。 ”/”这个表示任意一个匹配就OK。

[root@windriver-machine shtest]# find . -perm -007 -print
./1234
[root@windriver-machine shtest]# ll 1234
lrwxrwxrwx 1 root root 8 2011-08-06 22:07 1234 -> 1234.txt
[root@windriver-machine shtest]# find .  -perm -664 -print
.
./output
./ex1.sh
./newerr
./errors
./1234
[root@windriver-machine shtest]# find . -perm 664 -print
./output
./newerr
./errors
[root@windriver-machine shtest]# ll
total 20
lrwxrwxrwx 1 root      root         8 2011-08-06 22:07 1234 -> 1234.txt
drwsr-sr-x 2 windriver windriver 4096 2011-08-06 21:24 123abc
-rw-rw-r-- 2 windriver windriver   74 2011-08-06 22:11 errors
-rwxrwxr-x 1 windriver windriver  120 2011-08-06 01:44 ex1.sh
-rw-rw-r-- 2 windriver windriver   74 2011-08-06 22:11 newerr
-rw-rw-r-- 1 windriver windriver 1640 2011-08-06 19:13 output
[root@windriver-machine shtest]# find -perm /222 -print
.
./output
./ex1.sh
./newerr
./errors
./123abc
./123abc/123abc.txt
./1234
[root@windriver-machine shtest]# find . -perm /g+w,o=w -print
.
./output
./ex1.sh
./newerr
./errors
./1234
[root@windriver-machine shtest]#

【3】Directories  目录,目录可以搜索深度 –maxdepth  -mindepth -depth还可以通过-prune将一些特定目录排除出去。prune前面一定要用path和wholename指定路径。如果 depth起作用,则prune不起用.

[root@windriver-machine shtest]# find . -wholename './123abc' -prune , -print
.
./output
./ex1.sh
./newerr
./errors
./123abc
./1234
[root@windriver-machine shtest]# find . -wholename './123abc'  , -print
.
./output
./ex1.sh
./newerr
./errors
./123abc
./123abc/123abc.txt
./1234
[root@windriver-machine shtest]#

[root@windriver-machine shtest]# ll
total 20
lrwxrwxrwx 1 root      root         8 2011-08-06 22:07 1234 -> 1234.txt
-rw-r--r-- 1 root      root         0 2011-08-07 01:43 1234.txt
drwsr-sr-x 2 windriver windriver 4096 2011-08-06 21:24 123abc
-rw-rw-r-- 2 windriver windriver   74 2011-08-06 22:11 errors
-rwxrwxr-x 1 windriver windriver  120 2011-08-06 01:44 ex1.sh
-rw-rw-r-- 2 windriver windriver   74 2011-08-06 22:11 newerr
-rw-rw-r-- 1 windriver windriver 1640 2011-08-06 19:13 output
[root@windriver-machine shtest]# find . -path "./123abc" -prune -o -name "*.txt" -print
./1234.txt
[root@windriver-machine shtest]#

【4】Owner 文件用户及用户组  -user –group –uid –gid –nouser -nogroup这些选项都可以使用,针对用户名称及ID进行排除或者指定。

[root@windriver-machine shtest]# find /home -nouser -print
[root@windriver-machine shtest]# find /home -group root -print
/home
/home/windriver/.java
/home/windriver/.java/.userPrefs

【5】Time 时间分为两种,一种是时间范围,一种是两个时间进行比较。 前一种时间范围,通常有两种计算单位,一个是24小时,另一个是分钟,小时的使用的是一个文件的访问时间atime,状态修改时间ctime及内容变更时间mtime,分钟对应的是amin cmin mmin

[root@windriver-machine shtest]# stat 1234.txt
  File: `1234.txt'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 805h/2053D      Inode: 8719789     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-08-07 01:43:59.000000000 +0800
Modify: 2011-08-07 01:43:59.000000000 +0800
Change: 2011-08-07 01:43:59.000000000 +0800
[root@windriver-machine shtest]# date
Sun Aug  7 01:55:28 CST 2011
[root@windriver-machine shtest]# find . -amin +20 -cmin -6
[root@windriver-machine shtest]# find . -amin +30 -cmin -6
[root@windriver-machine shtest]# find . -amin +30
./output
./ex1.sh
./newerr
./errors
./123abc/123abc.txt
[root@windriver-machine shtest]# find . -amin +20
./output
./ex1.sh
./newerr
./errors
./123abc/123abc.txt
[root@windriver-machine shtest]# find . -amin +10
./output
./ex1.sh
./newerr
./errors
./1234.txt
./123abc/123abc.txt
[root@windriver-machine shtest]# find . -mmin +10
.
./output
./ex1.sh
./newerr
./errors
./1234.txt
./123abc
./123abc/123abc.txt
./1234
[root@windriver-machine shtest]#

[root@windriver-machine shtest]# find / -mtime -5 -print
/
/var/spool/clientMQueue
/var/spool/anacron/cron.daily
/var/spool/mqueue
/var/spool/mail
/var/spool/mail/root
/var/tmp

另一种是希望查找更改时间比某个文件新但比另一个文件旧的所有文件可以使用-newer

[root@windriver-machine shtest]# ll
total 20
lrwxrwxrwx 1 root      root         8 2011-08-06 22:07 1234 -> 1234.txt
-rw-r--r-- 1 root      root         0 2011-08-07 01:43 1234.txt
drwsr-sr-x 2 windriver windriver 4096 2011-08-06 21:24 123abc
-rw-rw-r-- 2 windriver windriver   74 2011-08-06 22:11 errors
-rwxrwxr-x 1 windriver windriver  120 2011-08-06 01:44 ex1.sh
-rw-rw-r-- 2 windriver windriver   74 2011-08-06 22:11 newerr
-rw-rw-r-- 1 windriver windriver 1640 2011-08-06 19:13 output
[root@windriver-machine shtest]# find . -newer output ! -newer 1234.txt
.
./newerr
./errors
./1234.txt
./123abc
./123abc/123abc.txt
./1234
[root@windriver-machine shtest]#

【6】type 文件类型,文件类型通常指目录、连接等,使用-type

root@windriver-machine shtest]# find . -type l -print
./1234
[root@windriver-machine shtest]#

【7】SIZE 大小, 以字节计量文件长度的表达形为Nc,以块只用数字如 find . –size +100000c –print  -empty表示空。

root@windriver-machine shtest]# find . -type l -print
./1234
[root@windriver-machine shtest]#

 

常用的OPTION如下:

【1】mount表示只查找当前文件系统  find . –name “*.XC” –mount –print

【2】P,H,L表示是否根据符号软连接文件进行处理.

常用ACTION如下:

【1】文件名及文件信息打印,使用这些Action: print fprint ls fls, 用来打印到屏幕、输出到文件,列出所有信息等。

[root@windriver-machine shtest]# find . -name "*.txt" -print
./1234.txt
./123abc/123abc.txt
[root@windriver-machine shtest]# find . -name "*.txt" -fprint testoutput
[root@windriver-machine shtest]# cat testoutput
./1234.txt
./123abc/123abc.txt
[root@windriver-machine shtest]# find . -name "*.txt" -ls
8719789    0 -rw-r--r--   1 root     root            0 Aug  7 01:43 ./1234.txt
8719793    0 -rwxr-xr-x   1 windriver windriver        0 Aug  6 21:24 ./123abc/123abc.txt
[root@windriver-machine shtest]# find . -name "*.txt" -fls testoutput2
[root@windriver-machine shtest]# cat testoutput2
8719789    0 -rw-r--r--   1 root     root            0 Aug  7 01:43 ./1234.txt
8719793    0 -rwxr-xr-x   1 windriver windriver        0 Aug  6 21:24 ./123abc/123abc.txt
[root@windriver-machine shtest]#

【2】运行命令,使用-exec –execdir  -ok 等运行一个指定命令。这些命令需要一些参数,那么怎么放置这些参数呢? 这里使用两个特殊参数,一个是{}代表前面find出来的文件名 “;”代表参数结束。

oot@windriver-machine shtest]# find /etc  -name "passwd" -exec grep "windriver" {} \;
windriver:x:500:500::/home/windriver:/bin/bash

[root@windriver-machine shtest]# find . -name '*.h' -execdir diff -u '{}' /tmp/master ';'
[root@windriver-machine shtest]#

exec 通常是一个一个文件进行处理,如果使用{}+进行多个文件一起处理,会带来一些性能问题。这时候可以使用xargs进行处理。使用xargs是先进行管道输出,这一点与-exec 这个action是不一样的。

[root@windriver-machine shtest]# cut -d':' -f1</etc/passwd|head -n 3|xargs -p -n 5  finger
finger root bin daemon ?...y
Login: root                             Name: root
Directory: /root                        Shell: /bin/bash
Last login Mon Aug 22 22:21 (CST) on pts/0 from 10.141.225.19
Mail last read Wed Sep  7 20:51 2011 (CST)
No Plan.

Login: bin                              Name: bin
Directory: /bin                         Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.

Login: daemon                           Name: daemon
Directory: /sbin                        Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.

Login: rpc                              Name: Rpcbind Daemon
Directory: /var/lib/rpcbind             Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.

Login: nscd                             Name: NSCD Daemon
Directory: /                            Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.

Login: avahi                            Name: Avahi daemon
Directory: /                            Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.

Login: haldaemon                        Name: HAL daemon
Directory: /                            Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.
[root@windriver-machine shtest]# find . -name '*.h' -execdir diff -u '{}' /tmp/master ';'
[root@windriver-machine shtest]#

【3】删除命令  -delete直接就删除了,也可以使用前面的命令 rm

--结束END--

本文标题: Linux基本操作实验(3)

本文链接: https://www.lsjlt.com/news/184968.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux基本操作实验(3)
    Linux操作系统拥有非常多的文件,每种文件都代表一些特定的含义。如何快速的定位到你想要的文件,是一个非常复杂的过程。GNU提供了一个非常有效的工具findutil,(http://www.gnu.org/software/findutil...
    99+
    2023-01-31
    操作 Linux
  • 3. PowerShell --基本操作
    1.  PowerShell控制台打开PowerShell,可以完成DOS,cmd 等操作;显示如下界面:2. cmdlet命令它使用“动词-名词”命名的形式作为一个cmdlet命令查看当前powershell中的所有cmdlet 命令: ...
    99+
    2023-01-31
    操作 PowerShell
  • Git基本概念及操作(3)
    如果使用传统的如CC开发的话,刚开始进行GIT开发可能不是太适应。这个主要是有些概念不一样。比喻在CC中,我们一般是围绕一个主分支进行开发,对一个文件来说,在主分支上会生成不同的版本。同样,我们在每一个版本下面创立新的次分支,在次分支上也会...
    99+
    2023-01-31
    基本概念 操作 Git
  • 实验3:CDP命令操作
       Cisco Discovery Protocol (CDP)从名字我们就可以看出这是Cisco专有的了,建议大家学习CCNA的时候尽量熟悉全拼 不要简单的记下缩写! CDP可以收集相邻的设备的硬件和协议信息 CD...
    99+
    2023-01-31
    命令 操作 CDP
  • linux yum的基本操作
    这篇文章主要介绍“linux yum的基本操作”,在日常操作中,相信很多人在linux yum的基本操作问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux yum的基本操作”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-13
  • 第 3 部分 MongoDB常用基本操作
    help KEYWORDS.help() KEYWORDS.[TAB] db. rs. sh. show use db.help() db.a.help() rs.help() sh.help() 查看当前db版本 test>...
    99+
    2023-01-31
    常用 操作 MongoDB
  • 基于linux操作系统Mysql的基本操作(一)
    基于linux操作系统Mysql的基本操作(一)背景介绍:mysql软连接的建立,ln –s /usr/local/mysql/bin/mysql  /usr/bin1.本地登录,命令:...
    99+
    2022-10-18
  • 基于linux操作系统Mysql的基本操作(三)
    基于linux操作系统Mysql的基本操作(三) 知识点一:查看MYSQL数据库中所有用户命令: select distinct concat ('User:''',user,...
    99+
    2022-10-18
  • Linux介绍和基本操作
    Linux是一种自由和开放源代码的操作系统,其内核由Linus Torvalds开发,并由全球范围内的开发者社区维护和发展。Linu...
    99+
    2023-09-09
    Linux
  • 文本操作3(cut,sort)
    检查当前系统中的各种shell程序,统计出它们各被多少用户所使用,并把统计结果按照从多到少排序打印出来 每个用户所使用登录的shell都保存在系统文件/etc/passwd中,我们已经知道这个文件中每一行对应一个用户的信息,并且最后一...
    99+
    2023-01-31
    文本 操作 sort
  • MySQL基本操作和基于MySQL基本操作的综合实例项目
    文章目录 MySQL数据库的基本操作和基于MySQL数据库基本操作的综合实例项目1、 登入MySQL数据库1、创建数据库2、删除数据库3、综合案例——数据库的创建和删除cmd环境创建和删除数据...
    99+
    2023-09-04
    mysql 数据库 sql ide 数据库开发
  • Linux基础实验
    Linux基础实验 引用希翼平台Linux基础实验 目录 Linux基础实验一、Linux文件和目录mkdir(创建目录)ls(列出目录)pwd (显示目前所在的目录)cd (切换目录)rmdir (删除空的目录)touch ...
    99+
    2023-12-22
    linux 运维 服务器
  • JAVA_基本LDAP操作实例
    一、简介 Lightweight Directory Access Protocol (LDAP),轻型目录访问协议是一个访问在线目录服务的协议。下面的例子中简单介绍在java中队...
    99+
    2022-11-15
    JAVA LDAP
  • Linux和MySQL的安装与基本操作
                 Linux和MySQL的安装与基本操作原文地址:https://www.cnblogs.com/cym1/p/13787117.html...
    99+
    2020-07-06
    Linux和MySQL的安装与基本操作 数据库入门 数据库基础教程 数据库 mysql
  • Linux中基本的文件操作命令
    本篇内容介绍了“Linux中基本的文件操作命令”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!cdcd 是打开某个路径的命令,也就是打开某个文...
    99+
    2023-06-12
  • Mongodb基操--基本安装与多实例操作
    NoSQL 简介NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。在现代的计算系统上每天网络上都会产生庞大的数据量。这些数据有很大一部分是由关系数据库管理...
    99+
    2022-10-18
  • Python操作SQLLite(基本操作
      SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不受版权限制。 Python SQLITE数据库是一款非常...
    99+
    2023-01-31
    操作 Python SQLLite
  • Hive基本操作
    01.Hive是什么1. Hive介绍Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。Hive是SQL解析引擎,它将SQL语句转译成M/R J...
    99+
    2022-10-18
  • oracle基本操作
    对表的结构操作                        add   &...
    99+
    2022-10-18
  • [MongoDB] 基本操作
    ...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作