文件目录管理


前言

Linux文件管理,首先我们需要了解的就是,我们要对文件目录结构。
操作其实无非就是对一个文件进行、创建、复制、移动、查看、编辑、压缩、查找、删除、等等


一、Linux 目录结构

计算机操作系统都是使用目录结构组织文件,linux中一切皆是文件:具体来说就是在一个目录中存放子目录和文件, 该子目录中又存放子目录和文件,以此类推形成一个树状的文件结构,其结构很像一棵树的分支, 所以该结构又被称为–目录树。
Windows: 以多根的方式组织文件 C:\ D:\ E:\ F:
Linux:以单根的方式组织文件 /

1.目录结构

[root@localhost /]# tree  -L 1

├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── upload
├── usr
└── var

2.目录介绍

/	根目录
	/bin,/sbin,/usr/bin,/usr/sbin 可执行程序(二进制程序)
	/lib,/lib64		linux库文件(.so文件)让系统中某一个功能或软件可以正常运行
	/boot			启动分区(放内核、启动配置文件)
	/etc			应用程序的配置文件  *.conf结尾
	/home		    普通用户的家目录/宿主目录   /home/sdk
	/root			root用户家目录/宿主目录 
	/var 			可变的目录与临时目录 例/var/log/下的日志文件
	/tmp			系统临时目录
	/dev			设备文件目录
	/proc,/sys		伪根系统(存放系统运行过中内核参数的值)

二、文件目录管理和操作

对一个文件进行、创建、复制、移动、查看、编辑、压缩、查找、删除、等等

1.切换目录

格式 cd [目录名称]

 1. cd .. 返回上级目录 
 2. cd /	 返回根目录

2.创建目录

2.1.语法格式

mkdir [option] <目录名>

[option]      -p     递归、层级方式创建目录
2.2.1. 创建单级目录

样例:mkdir /tmp/wuhan 创建wuhan目录
样例:mkdir /linux 根目录创建linux目录

2.2.2. 递归、层级创建目录

样例:[root@xuhua ~]# mkdir -p /hqkj/2023-{1…12}

[root@xuhua ~]# ls -l /hqkj/
total 0
drwxr-xr-x 2 root root 6 Jun  8 10:54 2023-1
drwxr-xr-x 2 root root 6 Jun  8 10:54 2023-10
drwxr-xr-x 2 root root 6 Jun  8 10:54 2023-11
drwxr-xr-x 2 root root 6 Jun  8 10:54 2023-12
drwxr-xr-x 2 root root 6 Jun  8 10:54 2023-2
drwxr-xr-x 2 root root 6 Jun  8 10:54 2023-3
drwxr-xr-x 2 root root 6 Jun  8 10:54 2023-4
drwxr-xr-x 2 root root 6 Jun  8 10:54 2023-5
drwxr-xr-x 2 root root 6 Jun  8 10:54 2023-6
drwxr-xr-x 2 root root 6 Jun  8 10:54 2023-7
drwxr-xr-x 2 root root 6 Jun  8 10:54 2023-8
drwxr-xr-x 2 root root 6 Jun  8 10:54 2023-9

**样例:[root@xuhua ~]# mkdir -p /hbhy/linux

[root@xuhua ~]# ls -l /hbhy/
total 0
drwxr-xr-x 2 root root 6 Jun  8 10:57 linux

3.创建文件

3.1.语法格式

touch <文件名>

注意:文件名区分大小写,没有后缀名之分

3.1.1 批量创建文件

批量创建文件和目录技巧:花括号展开

样例:touch /tmp/{1…100}.mp3 生成100个文件

[root@xuhua ~]# touch /tmp/{1..100}.mp3
[root@xuhua ~]# ls -l /tmp/
total 9808
-rw-r--r-- 1 root root       0 Jun  8 11:46 100.mp3
-rw-r--r-- 1 root root       0 Jun  8 11:46 10.mp3

样例:touch /tmp/{1,3,9}.jpg 生成1.jpg 3.jpg 4.jpg

[root@xuhua tmp]# touch /tmp/{1,3,9}.jpg  
[root@xuhua tmp]# ls -l /tmp/
total 0
-rw-r--r-- 1 root root 0 Jun  8 11:47 1.jpg
-rw-r--r-- 1 root root 0 Jun  8 11:47 3.jpg
-rw-r--r-- 1 root root 0 Jun  8 11:47 9.jpg
3.1.2 命令引用方式创建文件

方法1:
格式:$(命令)

样例:touch /tmp/$(date +%F-%T).log

[root@xuhua tmp]# touch /tmp/$(date +%F-%T).log
[root@xuhua tmp]# ls -l
total 0
-rw-r--r-- 1 root root 0 Jun  8 12:16 0.jpg
-rw-r--r-- 1 root root 0 Jun  8 12:16 1.jpg
-rw-r--r-- 1 root root 0 Jun  8 14:07 2023-06-08-14:07:53.log
-rw-r--r-- 1 root root 0 Jun  8 11:47 3.jpg
-rw-r--r-- 1 root root 0 Jun  8 12:16 8.jpg
-rw-r--r-- 1 root root 0 Jun  8 11:47 9.jpg

方法2:反引号
格式:``

样例:touch /tmp/date +%F-%T.log

方法2: 反引号 格式 :命令
样例:touch /tmp/date +%F-%T.log

[root@xuhua tmp]# touch /tmp/`date +%F-%T`.log

4.复制文件目录

格式 cp [option] 源文件 目标文件
选项:-r 复制文件夹
选项:-f 强制覆盖

常规复制
样例:cp /linux/1.txt /windows/

复制并重命名
样例:cp /linux/2.txt /windows/2.jpg

复制文件夹
样例:cp -r /linux/ /windows/

5.移动文件目录

mv 源文件 目标文件

6.删除文件目录

** 格式 rm [option] 文件名称
选项:-r 删目录
选项:-f 强制删除,目录中件不提示,直接删除**

样例 rm -rf 目录名称

7.查看文本文件内容

cat
more(只能往下翻)
less(支持上下翻)空格键向下翻页,按b键向上翻,按向上向下键一行一行的显示、退出q键
head
tail

8.查看文件类型

** 格式 file /etc/passwd**

[root@xuhua home]# file /etc/passwd
/etc/passwd: ASCII text

9.查找文件目录

格式 find 路径 查找方式

9.1.按照文件名称查:-name

样例:find /etc/ -name “*.conf”

[root@xuhua ~]# find /etc/ -name "*.conf"
/etc/resolv.conf
/etc/depmod.d/dist.conf
/etc/dracut.conf
/etc/prelink.conf.d/nss-softokn-prelink.conf
/etc/prelink.conf.d/fipscheck.conf

9.2.按照文件大小查:-size

样例:find /etc/ -size +1M
+大于1M -小于1M 1M 等于1M 大小中如果是k 只能是小写,其它的均为大写

[root@xuhua ~]# find /etc/  -size +1M    
/etc/udev/hwdb.bin
/etc/selinux/targeted/active/policy.kern
/etc/selinux/targeted/contexts/files/file_contexts.bin
/etc/selinux/targeted/policy/policy.31

9.3.按照文件修改时间查:-mtime

样例:find / -mtime +7 找7天之前改过的文件
样例: find / -mtime -7 找7天内改过的文件

[root@xuhua ~]# find /tmp  -mtime -7   
/tmp
/tmp/1.jpg
/tmp/3.jpg
/tmp/9.jpg
/tmp/0.jpg

9.4.按照文件类型查:-type

样例:find /dev/ -type b
样例:find /dev/ -type l

[root@xuhua ~]# find /dev/ -type b
/dev/dm-1
/dev/dm-0
/dev/sr0
/dev/sda3
/dev/sda2
/dev/sda1
/dev/sda

9.5.复合条件 -a

find / -mtime -7 -a -size +100k 7天之后并且大小超过100k

[root@xuhua ~]# find / -mtime -7 -a -size +100k 
/proc/kcore
/run/log/journal/4f97e3a04fd546908a050bc97ed8721f/system.journal
/sys/devices/pci0000:00/0000:00:02.0/resource0_wc
/sys/devices/pci0000:00/0000:00:02.0/resource0
/sys/devices/pci0000:00/0000:00:12.0/rom
/var/lib/yum/history/history-2022-03-14.sqlite

9.6.查找后批量复制或删除

-exec 解释:执行后续操作
{} 解释:find查找后到的文件

find /tmp/ -name “*.txt” -exec rm -rf {} ;

查找后批量复制

find /tmp/ -name “*.txt” -exec cp {} /home/hb ;

10.文件目录信息查看

语法格式     ls [option] [文件名/目录名]
-     表示文件
d	  表示目录
l(小)表示软链接文件(link)类似windows快捷方式
b	块设备文件(block)硬盘、硬盘分区、U盘  /dev下面可以查看到
c	字符设备文件(character)鼠标、键盘、显示器 /dev下面可以查看到

[root@xuhua ~]# ls -l /home/
total 1157932
-rw-r--r--  1 root  root       1632 May 24 12:40 12.txt
-rw-r--r--  1 root  root  473281038 May 24 12:49 2023data1.sql
drwxr-xr-x 11 root  root        246 Oct 10  2022 apache-tomcat-8.5.57
-rw-r--r--  1 root  root        807 Oct 10  2022 certfile.cer
-rw-r--r--  1 root  root   26965566 Nov 24  2022 dump.rdb
-rw-r--r--  1 root  root    5663809 Jun 16  2022 generatorLicense.jar
-rw-r--r--  1 root  root    3087235 Jun 16  2022 getServerInfo.jar
drwxr-xr-x  8    10   143       255 Mar 15  2017 jdk1.8.0_131
-rw-r--r--  1 root  root        920 Oct 10  2022 license.lic
drwxr-x---  2 root  root        109 Nov 17  2022 log
drwxr-x---  3 root  root         19 Oct 10  2022 logs
drwx------  3 mysql mysql        75 Oct  9  2022 mysql
-rw-r--r--  1 root  root  676676298 Jun  8  2022 mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz
-rw-r--r--  1 root  root        527 Oct 10  2022 param.json
-rw-r--r--  1 root  root       1281 Oct 10  2022 privateKeys.keystore
-rw-r--r--  1 root  root        874 Oct 10  2022 publicCerts.keystore
drwxrwxr-x  6 root  root        309 Nov 24  2022 redis-3.2.12
-rw-r--r--  1 root  root        138 Oct 10  2022 server.json
drwxr-xr-x  2 root  root          6 Nov  8  2022 sms
-rwxr-xr-x  1 root  root        246 Nov 22  2022 testn.sh
-rwxr-xr-x  1 root  root        334 Nov 22  2022 test.sh

[option]
-h	显示文大小的时候带上单位,增加可读性
-l(小)  以详细信息的方式显示文件信息   
样例:ls -l /etc/passwd
-d       显示目录的自身信息
样例:ls -ldh /etc/
-a 	 显示所有文件,含隐藏文件
样例:ls -a
-t       文件修改时间降序排列
样例:ls -lt
-S	 文件大小排列降序排列

[root@xuhua tmp]# ls -l /etc/passwd
-rw-r--r-- 1 root root 1097 Jun  2 14:15 /etc/passwd

[root@xuhua tmp]# ls -ldh /etc/
drwxr-xr-x. 75 root root 8.0K Jun  2 14:15 /etc/

[root@xuhua tmp]# ls -a
.  ..  1.jpg  3.jpg  9.jpg  .font-unix  .ICE-unix  .Test-unix  .X11-unix  .XIM-unix

[root@xuhua tmp]# ls -lt
total 0
-rw-r--r-- 1 root root 0 Jun  8 12:16 0.jpg
-rw-r--r-- 1 root root 0 Jun  8 12:16 1.jpg
-rw-r--r-- 1 root root 0 Jun  8 12:16 8.jpg
-rw-r--r-- 1 root root 0 Jun  8 11:47 3.jpg
-rw-r--r-- 1 root root 0 Jun  8 11:47 9.jpg

11.vim编辑器使用

它是模式化的编辑器:提供不同的操作模式,不同的模式操作的中做不同的操作。

11.1.三种模式介绍

  • 命令模式:移动光标、复制文件中内容、删除文件中内容
  • 插入模式:所有操作写入到文件中 ESC到命令模式 >>>> : 最后到末行模式
  • 末行模式:显示行号、保存、强制退出

11.2.模式间的切换

  • 命令模式>>>>>>>>>>>>>>插入模式 :a i o(小) O(大)
  • 插入模式>>>>>>>>>>>>>>命令模式 插入模式回命模式令直接按 ESC
  • 命令模式>>>>>>>>>>>>>>末行模式 ESC到命令模式最后按 :末行模式
    注意到末行模式时当前的模式只能是命令模式
    例如:插入模式到末行模式,只能从只能先到命令模式 ,命令模式按:到末行模式
    **

11.1.命令模式下的操作**

11.1.1快速移光标
  • h 左 j下 k上 l右
  • G(大)文件最后一行
  • gg(小)文件首行
  • 10gg 跳转到指定行
  • $ 跳转到行尾
  • ^ 跳转到行首
11.1.2.删除
  • x 删除光标所在的 单个字符
  • dw 删除光标所在的单词
  • d$ 删除光标所在位置到该行的行尾
  • d^ 删除光标所在位置到该行的行首
  • 13dd 删除光标所在行往下数13行
  • dG 删除到文件末尾(包含光标所在的行)
11.1.3.替换操作
  • r 替换单字符
11.1.4.复制粘贴
  • yy 复制一整行 p(小)
  • 粘贴当前光标所在行的下面一行 P(大)
  • 粘贴当前光标所在行的上面一行
  • 5p 连续粘贴5次
  • 5yy 复制前5行

11.2.末行模式操作

11.2.1.强制退出
  • :q!
11.2.2.保存
  • :wq
11.2.3.追加文件内容

:r /etc/fstab 将/etc/fstab 中内容追加到当前文件中

11.2.4.显示行号

:set nu
:set nonu 去掉行号

11.2.4.查找替换

:[查找范围] s/旧内容/新内容[/修饰符]

样例: :s/root/admin 把光标所在行的第1个 root换成admin
样例: :s/root/admin/g 把光标所在行的所root换成admin
样例: :% s/root/admin/g 全文行中的 root换成admin
样例: :5,10 s/root/admin/[option] g 替换第5行—10行中所有root 换成admin
样例: :.,$ s/root/admi/g 将移动光标到指定行,删除该行到文本的最后行都替换

12.grep配合则使用

grep 作用:过滤文件内容

12.1.格式语法

grep [option] “pattern” 文件名称

说明:根据一定的条件过滤内容

pattern解释:模式条件,由普通字符和正式表达式的元字符组成的条件

12.2.正侧表达式的元字符

正式表达式的元字符:所谓正则表达式就是用一些特殊的字符来组成一个字符串,用这个字符串可以代表一类具有相当特征的文本
而组成正则表达式的特殊字符,我们就称之为元字符,这些元字符在使用的时候,根据我们的需求不同,这个元字符大体可以分为三类

12.2.1.匹配单个字符的元字符
12.2.1.1. 任意单个字符

.任意单个字符
样例 grep “r…t” /etc/passwd

[root@localhost ~]# grep "r..t" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
12.2.1.2.[ ]其中任意一个

[]
[abc] 或者关系 其中任意一个,要么是 a 要么是b 要么是c
样例 grep “r[aA]t” /tcmp/1.txt

12.2.1.3.连续的字符范围

匹配任意一个小写字母[a-z]
匹配任意一个大写字母[A-Z]
匹配任意一个数字[0-9]
匹配是一个字母[a-zA-Z]
匹配是一个字母或者是一个数字[a-zA-Z0-9]

12.2.2.匹配单个字符的元字符的特殊字符

[:punct:] 用法[[:punct:]] 任意单个标点
[:space:] 用法[[:space:]] 任意单个空白字符

12.2.3.匹配字符出现的位置的元字符
12.2.3.1.^string 以string开头

样例:grep “^root” /etc/passwd 以root开头的行
样例:grep “1” /et/passwd 以r或b或h开头的行
样例:grep “[rbh]” /et/passwd 不是以r或b或h开头的行
样例:ls -l /etc/ |grep “^d” 显示/etc下所有目录的名称

12.2.3.2.string$ 以string结尾

样例:grep “bash$” /etc/passwd 以base结尾的

^$ 空行

12.2.3.3.匹配字符出现的次数

单个字符

a ab abb abbb abbbb abbbbb abbbbbb

  • 匹配其前一个字符出现任意次(0次或者多次) ab* 这个只能代表前b出现的次数 所以ab 这个正式可以 匹配到 :a ab abb abbbb
    .* 任意长度任意字符
    \? 0次或者1次 说直白点就是前面的那一个字符会可有可无
    + 1次或者多次 说直白点就是前面的那一个字符最少出现一次
    \{n\} 精确出现几次
    {2,5} 最少2次,最多5次
    \{2,\} 最少2次,最多不限
12.2.3.4.分组

有二个作用:第一、把多个字母符当成一组当成一个整体,当成一个字符;第二是做正则表达式的反向引用。

\(ab)+

样例:grep “(ab){2,}” /usr/share/dict/words ab二个字出现最少出现2次的字符


  1. rbh ↩︎

  • 24
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值