文件目录管理
前言
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次的字符
rbh ↩︎