Linux运维-文件类型和查找命令

Linux运维-文件类型和查找命令_第1张图片
day11-文件类型、查找命令和解压.png

一.文件属性内容

1.文件类型:

例如这些扩展名:.avi .txt .log .sh .doc

Windows: 系统根据不同的扩展名 区分不同类型的文件

Linux: 扩展名是给我们看的。方便人类区分不同类型的文件

常见扩展名
.txt  文本文件
.log  日志文件
.conf .cfg  配置文件
.sh .bash  脚本文件(命令大礼包)
2.常见的文件类型
-  (file )     普通文件
d  (diectory)  目录
l  (softlink)  软链接文件 快捷方式
b  (block)     设备(块)文件 光盘 硬盘
c  (character) 字符设备 (不断向外发出或接收字符)

二.如何区分文件类型(如何查看)

-rwxrw-r--.  每个字符的含义
    -   文件类型
    rwx 读 写 执行 (属主)
    rw- 属组的其他用户权限 可读可写不能执行
    r-- 其他用户
    .   seLinux

1. file (-)

  [root@lcx01 ~]# file /etc/init.d/network 
  /etc/init.d/network: Bourne-Again shell script, ASCII text executable
file下:
 1.二进制文件
 2.文本文件(.txt)
 3.数据文件(data) 压缩包
2. d 目录 (文件夹)
[root@lcx01 tmp]# ll
total 10932
drwxr-xr-x 2 root root       46 Apr  9 15:40 data
drwxr-xr-x 3 root root       20 Apr  9 18:35 file
3. l 软链接文件

软链接/符号链接 快捷方式 存放源文件的位置

创建软链接  ln -s

[root@lcx01 tmp]# ln -s file  file.soft
[root@lcx01 tmp]# ll
total 10932
drwxr-xr-x 3 root root       20 Apr  9 18:35 file
lrwxrwxrwx 1 root root        4 Apr  9 19:50 file.soft -> file

4. b 设备(块)文件 光盘 硬盘
[root@lcx01 tmp]# ls -l /dev/cdrom  /dev/sr0 /dev/sda
lrwxrwxrwx 1 root root      3 Apr  8 22:07 /dev/cdrom -> sr0
brw-rw---- 1 root disk   8, 0 Apr  8 22:07 /dev/sda
brw-rw---- 1 root cdrom 11, 0 Apr  8 22:07 /dev/sr0

5. c 字符设备 (不断向外发出或接收字符 )
/dev/urandom   随机字符生成器(不断向外发出或接收字符 生成随机密码)
/dev/null      黑洞 (不断接收信息)
/dev/zero      白洞 (不断发出信息 无法查看)


[root@lcx01 tmp]# ll /dev/urandom 
crw-rw-rw- 1 root root 1, 9 Apr  8 22:07 /dev/urandom

三. tr 替换的参数

-d删除
-c取反

例:(输入重定向 < 不要搞混)

在lcx.txt下创建{a..z}  {0..10} 的数组:
[root@lcx01 ~]# echo {a..z}  {0..10} > /lcx/lcx.txt
[root@lcx01 ~]# cat /lcx/lcx.txt
a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 10
2019/4/9 15:49:40

让小写字母替换成大写字母:
[root@lcx01 ~]# tr 'a-z'  'A-Z'  

四. 文件查找类相关命令:

1. which 显示命令全路径
  [root@lcx01 tmp]# which sed awk grep
  alias grep='grep --color=auto'
    /usr/bin/grep
  /usr/bin/sed
  /usr/bin/awk
2. whereis 显示命令及其相关文件全路径
  [root@lcx01 tmp]# whereis sed
  sed: /usr/bin/sed /usr/share/man/man1/sed.1.gz
3. locate 快速定位文件路径(了解无需掌握)
[root@lcx01 tmp]# locate grep awk

在安装locate命令时可能会出现yum故障:

[root@lcx01 tmp]# yum install -y locate
....
.....  
No package locate available.  \\没有叫做locate的软件包
Error: Nothing to do

如何查询命令属于哪个软件包呢

用命令  yum provides locate

[root@lcx01 tmp]# yum provides locate
....
mlocate-0.26-8.el7.x86_64 : An utility for finding files by name  \\软件包叫mlocate 版本号  el7(centos7) 64位
Repo        : @base
Matched from:
Filename    : /usr/bin/locate
还有一种方法就是—光盘安装
使用命令  mount /dev/cdrom /mnt/

[root@lcx01 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
[root@lcx01 ~]# ls /mnt/
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
[root@lcx01 ~]# rpm -ivh    /mnt/Packages/mlocate-0.26-8.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
    package mlocate-0.26-8.el7.x86_64 is already installed
[root@lcx01 ~]# rpm -qa mlocate 
mlocate-0.26-8.el7.x86_64

4. find 查找目录下的文件 ※

1#.find -type 查找某类型的文件

-f 文件
-d 目录

例:查找文件
找到/tmp下的以.txt结尾的文件
[root@lcx01 tmp]# find /tmp/ -type f -name "*.txt"
/tmp/all.txt
/tmp/lcx.txt
/tmp/data/lcx.txt

找到ip命令所在的位置
[root@lcx01 tmp]# find / -type f -name 'ip'
/usr/sbin/ip
/usr/share/bash-completion/completions/ip
例:查找目录
使用  find / -type d -maxdepth +行数
类似于tree命令

[root@lcx01 ~]# find / -type d -maxdepth 1
find: warning: you have specified the -maxdepth option after a non-option argument 
-type, but options are not positional (-maxdepth affects tests specified before it as 
well as those specified after it).  Please specify options before other arguments.
\\warning 警告了

-maxdepth 1 这个参数要放在其他参数之前
[root@lcx01 ~]# find /  -maxdepth 1 -type d 
/
/boot
/dev
/proc
/run
/sys
/etc
/root
.......
2#. find -iname参数 查找的文件不区分大小写

区分大小写:

[root@lcx01 ~]# find  /lcx/alex/   -type f  -name "lcx*.txt"
/lcx/alex/lidao/lcx.txt
/lcx/alex/lcx01.txt
/lcx/alex/lcx02.txt
/lcx/alex/lcx03.txt
/lcx/alex/lcx04.txt
/lcx/alex/lcx05.txt

不区分大小写:

[root@lcx01 ~]# find  /lcx/alex/   -type f  -iname "lcx*.txt"
/lcx/alex/lidao/lcx.txt
/lcx/alex/lcx01.txt
/lcx/alex/lcx02.txt
/lcx/alex/lcx03.txt
/lcx/alex/lcx04.txt
/lcx/alex/lcx05.txt
/lcx/alex/lcx01.txt
/lcx/alex/lcx02.txt
/lcx/alex/lcx03.txt
/lcx/alex/lcx04.txt
/lcx/alex/lcx05.txt
例:

找出/etc/目录下面第1层目录中以.conf结尾的文件(不区分大小写):

find /etc/ -maxdepth 1  -type f  -iname "*.conf"
3#. find /etc/ -size +/- 1k/M 按文件大小查找

-size +/- 1M或k

查看/etc/下大于1M的文件:
[root@lcx01 tmp]# find /etc/ -size +1M
/etc/selinux/targeted/contexts/files/file_contexts.bin
/etc/selinux/targeted/policy/policy.31
/etc/selinux/targeted/active/policy.kern
/etc/selinux/targeted/active/policy.linked
/etc/udev/hwdb.bin

5. xargs 分组

先创建好环境:
[root@lcx01 ~]# echo {1..10}  >/lcx/sf.txt
[root@lcx01 tmp]# cat lcx/lcx.txt 
1 2 3 4 5 6 7 8 9 10
[root@lcx01 tmp]# xargs -n 3 < lcx/lcx.txt 
1 2 3
4 5 6
7 8 9
10

6.-exec 命令 {} ;

找出/lcx下面以.txt结尾的文件复制到/tmp下面
find lcx/ -type f -name '*.txt' -exec cp {} /tmp/ ;

7.-mtime 1

一天以内 -mtime -1
一天以前所有 -mtime +1
只看一天前 -mtime 1

8.-maxdepth 2 类似tree命令

find / -type f -maxdepth 3 -name '*.txt' 查看以.txt结尾的文件,最大目录层数是3层

五. tar 打包压缩命令

压缩文本文件 工作中可以用来备份配置文件

我们在windows中常见的压缩软件 : 压缩 (Winrar 好压)
在Liunx中 : 打包压缩

参数:
z   通过gzip工具进行压缩
c   create  创建包
v   verbose 显示过程
f   指定压缩包(最好放在最后)
t   list  查看压缩包内容
x   解压
Linux运维-文件类型和查找命令_第2张图片
image.png
1.如何创建压缩包

tar zcvf

例:
使 /etc 目录 压缩完成放在:
/tmp/etc/.tar.gz (通过tar打包 gzip进行压缩)

tar zcvf
[root@lcx01 tmp]# tar zcvf /tmp/etc.tar.gz /etc/
2. 如何查看压缩包的内容

tar ztf

[root@lcx01 tmp]# tar ztf /tmp/etc.tar.gz

刷屏.....
3 如何解压

zxvf

[root@lcx01 tmp]# tar zxf etc.tar.gz 
[root@lcx01 tmp]# ll etc
total 1092
drwxr-xr-x  3 root root    101 Mar 26 13:57 abrt
-rw-r--r--  1 root root     16 Mar 26 14:04 adjtime
-rw-r--r--  1 root root   1518 Jun  7  2013 aliases
-rw-r--r--  1 root root  12288 Mar 26 14:10 aliases.db
....

4. 怎么解压到指定目录

xf (默认解压到当前目录)

解压到的指定路径前要加 -C
[root@lcx01 tmp]# tar xf etc.tar.gz -C /data/
[root@lcx01 tmp]# ll /data/
total 01
drwxr-xr-x  81 root root 8192 Apr  9 15:12 etc

【巨坑】tar让我们迷茫的提示

相关链接 :https://www.jianshu.com/p/631618020430
使用tar创建压缩包的时候 被压缩的文件或目录使用了绝对路径 会有这个提示

[root@lcx01 tmp]# tar zcvf lcx/lcx.txt  /tmp/lcx.txt.tar.gz
tar: Removing leading `/' from member names   \\从压缩包中删除每个文件最开头的/
/tmp/lcx.txt.tar.gz

把压缩包中的 绝对路径---->相对路径
所以tar命令解压到的时候默认会解压到当前目录

为何tar命令这么做?
解压的时候 也会按照绝对路径解压 会把源文件覆盖。
系统替我们预防故障,通过把绝对路径--->相对路径。

你可能感兴趣的:(Linux运维-文件类型和查找命令)