1.find
基本语法
find [文件路径] [选项 选项的值]
name * 根据文件的名称搜索文件,支持通配符*
-type f|d f代表普通文件,d代表目录
如果要查找的文件的名称不清晰,可以使用部分文件名+*搜索
# find /etc/ -name "*.conf" -type f 例 获取/etc/中以.conf结尾的文件
2.文件的时间的概念
window中的时间
1.创建时间
2.修改时间
3.访问时间
使用stat命令获取文件的时间信息
touch:创建文件时规定创建时间
语法 touch -m -d 日期时间格式 文件名称
文件不存在就创建并修改时间
文件存在只配置最后修改时间
# touch -m -d "2020-7-7 00:00" /opt/abc.txt 修改或者创建文件,并设置最后修改时间
通过文件的最后修改时间搜索文件
find 文件路径 -mtime +days/-days
-mtime 根据文件最后修改时间搜索文件
+号 搜索几天之前的文件信息
-号 搜索几天之内的文件信息
find /opt/ -name "*.txt" -mtime +3 /opt/e.txt 搜索3天以前的信息,不包含第三个的,而且只搜txt文件
[root@1 ~]# find /opt1/ -mtime +3
/opt1/e.txt
/opt1/f.txt
[root@1 ~]# ls -l /opt1
总用量 0
-rw-r--r--. 1 root root 0 7月 15 09:32 a.txt
-rw-r--r--. 1 root root 0 7月 14 00:00 b.txt
-rw-r--r--. 1 root root 0 7月 13 00:00 c.txt
-rw-r--r--. 1 root root 0 7月 12 00:00 d.txt
-rw-r--r--. 1 root root 0 7月 11 00:00 e.txt
-rw-r--r--. 1 root root 0 7月 10 00:00 f.txt
搜索三天以内的.txt⽂件 ,包含今天
[root@1 ~]# find /opt1/ -mtime -3
ls与find找到文件之后不能直接删除文件
方法一:-exec
find 命令结合 exec 选项可以用来删除文件。
使⽤-exec ⽂件调⽤rm函数
{}表示前⾯find查到的内容
\;表示标识符
[root@1 ~]# find /opt1/ -mtime +3 -exec rm -rf {} \;
[root@1 ~]# ls -l /opt1
总用量 0
-rw-r--r--. 1 root root 0 7月 15 09:32 a.txt
-rw-r--r--. 1 root root 0 7月 14 00:00 b.txt
-rw-r--r--. 1 root root 0 7月 13 00:00 c.txt
-rw-r--r--. 1 root root 0 7月 12 00:00 d.txt
方法二:xargs
find与xargs结合使用
xargs 是一个在 UNIX 和类 UNIX 系统中非常有用的命令,用于将标准输入转换为命令行参数,并执行指定的命令。
用法 1:将输入转换为命令参数
假设我们有一个文件 files.txt ,里面包含了一些文件名,我们可以使用以下命令来删除这些文件:
cat files.txt | xargs rm
用法 2:指定每次传递的参数个数
通过 -n 选项可以指定每次传递给后续命令的参数个数。例如,每次传递 2 个参数给 ls 命令:
cat files.txt | xargs -n 2 ls
用法 3:结合 find 命令使用
可以与 find 命令结合,对找到的文件进行操作。例如,查找当前目录下所有的 .txt 文件并修改其权限:
find. -type f -name "*.txt" | xargs chmod 644
用法 4:与其他命令配合
比如,使用 mkdir 创建多个目录:
echo dir1 dir2 dir3 | xargs mkdir
使用find按文件大小进行搜索
[root@1 ~]# find / -size +100M //查找大于100M的文件
[root@1 ~]# find / -size +1G //查找大于1G的文件
[root@1 ~]# find / -size -100k //查找小于100k的文件
使用find按照文件大小查找文件(也能找到隐藏文件)
[root@1 ~]# find /opt1/ -size +5M
/opt1/c.txt
[root@1 ~]# find /opt1/ -size -5M
/opt1/
/opt1/a.txt
[root@1 ~]# find /opt1/ -size 5M
/opt1/b.txt
tree:用于以树状结构显示目录和文件
基本用法: 直接在终端输入 tree ,将显示当前目录的树状结构。
指定目录: 如果要显示特定目录的树状结构,只需在命令后添加目录路径,例如:
tree /home/user/directory
控制显示深度: 使用 -L 选项指定显示的深度,例如显示 2 层深度:
tree -L 2
只显示目录: 使用 -d 选项,例如:
tree -d
显示文件权限等详细信息: 使用 -p 选项,例如:
tree -p
输出到文件: 可以将树状结构输出到文件中,例如:
tree > tree_output.txt
以下是一个示例,假设在 /home/user/project 目录下有以下结构:
.
├── file1.txt
├── dir1
│ ├── file2.txt
│ └── subdir1
│ └── file3.txt
└── dir2
└── file4.txt</span></span>
执行 tree -L 2 命令后,输出可能如下:
/home/user/project
├── file1.txt
├── dir1
│ ├── file2.txt
│ └── subdir1
└── dir2
└── file4.txt</span></span>
执行 tree -d 命令,输出可能如下:
.
├── dir1
└── dir2</span></span>
执行 tree -p 命令,输出可能包含文件权限信息,例如:
.
├── [-rw-r--r--] file1.txt
├── [drwxr-xr-x] dir1
│ ├── [-rw-r--r--] file2.txt
│ └── [drwxr-xr-x] subdir1
└── [drwxr-xr-x] dir2</span></span>
scp:上传下载文件
SCP介绍:
下载 把数据从远程主机保存到本地主机
上传 把本地文件保存到远程主机
SCP(Secure Copy)是一种用于在本地和远程主机之间安全传输文件和文件夹的命令行工具,它基于 SSH 协议,并提供了加密和身份验证机制,确保数据的安全性和完整性。(要求本地主机与远程主机都是linux系统)
命令:
scp /opt1/a.txt root@10.0.0.20:/opt //上传文件到远程主机
scp -r /opt1/ root@10.0.0.20:/ //上传目录(文件夹)到远程主机
执行命令时,系统会要求输入远程主机的密码进行身份验证。
scp root@10.0.0.20:/opt1/b.txt /opt1/ //从远程主机下载文件
scp -r root@10.0.0.20:/opt1/haha /opt1/ //从远程主机下载目录(文件夹)
其他常用选项:
-p:保留文件的最后修改时间、最后访问时间和权限模式;
-c:使用指定的加密算法进行数据加密;
-q:不显示传输进度信息;
-P:指定 SSH 服务器的端口号(如果不是默认的 22 端口);
-i:指定用于身份验证的私钥文件路径(如果使用 SSH 密钥对进行认证)。
如果远程主机上的 SSH 服务器使用非标准端口 2222,可以使用以下命令上传文件:
scp -p 2222 /path/to/local/file user@remote:/path/to/destination
如果希望使用 SSH 密钥对进行身份验证,可以通过添加-i选项指定私钥文件的路径:
scp -i /path/to/private_key /path/to/local/file user@remote:/path/to/destination
crontab:计划任务
Crontab 介绍:
Crontab 是类 Unix 操作系统(包括 Linux 系统)中的一个用于设置定时任务的工具。
它通过一种特定的语法来指定任务执行的时间规则。例如,* * * * * command 表示每分钟执行一次 command 命令。
其时间设置字段从左到右依次为:分钟(0 - 59)、小时(0 - 23)、日(1 - 31)、月(1 - 12 或 jan - dec)、星期(0 - 7 或 sun - sat,0 和 7 都表示星期日)。
以下是一些常见的例子:
0 5 * * * command :每天早上 5 点执行。
30 18 * * 1-5 command :周一到周五的 18 点 30 分执行。
0 0 1 1 * command :每年 1 月 1 日的 0 点执行。
使用 crontab 可以方便地实现各种定时任务,如定时备份数据、定时清理缓存、定时发送邮件等。它在系统管理和自动化任务处理中发挥着重要作用。
命令:
(1)查看是否存在计划任务
crontab -l //查看是否有计划任务
which ls //查看ls命令位于什么位置
(2)每分钟自动将opt目录中的文件名写到root目录下的list中
crontab -e //编写计划任务
*/1 * * * * /usr/bin/ls /opt/ >> /root/list (*表示分时日月周) //每分钟执行一次
49 * * * * /usr/bin/echo "哈哈" > /root/echo.txt //每到49分时执行一次,类如:11:49可以执行一次
(3)验证
ls
vim list
vim echo.txt
(4)使用dd命令进行测试
dd if=/dev/zero of=/opt/hh.txt bs=100M count=1
vim list
(5)每分钟在/tmp目录下创建一个tar包(包含etc目录下的所有文件)
tar -czvf /tmp/etc.tar.gz /etc
which tar
crontab -e
*/2 * * * * /usr/bin/tar -czvf /tmp/etc.tar.gz /etc
(6)研究时间戳
date
date "+%T" //只显示时间
date "+%F" //只显示日期
date "+%Y%m%d%H%M%S" //年月日时分秒
crontab -e
*/1 * * * * /usr/bin/tar -czvf /tmp/etc_$(date"+\%Y\%m\%d\%H\%M\%S").tar.gz /etc/