Linux重要命令合集

简介: Linux重要命令合集

vim  

vim是linux下强大的文本编辑器,类似windows下的 notepad++ 。,

vim 可以编辑文件,也可以创建文件。

vim file.txt
对文件编辑输入 i o退出文件 先键入esc键  shift + : (英文) 弹出交互窗 
w       保存退出
q       退出
q!      强制退出
wq      保存并退出
wq!     强制保存并退出

vim 快捷键

光标的移动
G     快速移动到文件尾部
10G   快速移动到第十行
gg 1G  快速移动到行首
$ End  快速移动光标所在行的行尾
^ Home 0 快速移动光标所在行的行首
复制粘贴剪切删除   视图模式下
yy       复制当前光标所在行
2yy      复制光标所在连续两行
p        粘贴到光标所在行的下一行
3p       粘贴三次内容
dd       剪切光标所在的行
2dd      剪切光标所在的连续两行
d$  d+End 剪切光标所在到行尾
u        撤销操作
D        剪切光标所在到行尾
d^ d+home d0 删除光标所在到行首
dG       剪切光标所在行到文件尾部
dw       剪切一个单词
s         删除一个字母
x         删除一个字母
编辑模式
i  a    进入编辑模式
o      进入光标所在行的下一行编辑
O      进入光标所在行的上一行编辑
C      删除光标所在行行尾并进入编辑模式
A      移动到行尾并进入编辑模式
cc      删除整行进入编辑模式
批量操作
1.ctrl + v  选中行 
2.按大写I 
3.输入要添加的内容
4.按两次esc
1.ctrl + v  选中行
2.r
3.输入替换内容
vim 不正常退出
1.直接删除.swp 文件 进行编辑 新写入的内容会消失
2.如何恢复
vim -r 1.txt 按回车保存退出
删除.swp 文件即可


四剑客之grep

grep 语法

grep  -参数  '字符串'   文件名

grep选项参数

-r 递归搜索
  -v 取反
  -o 显示匹配过程
  -n 显示过滤出内容的行号
  -w 统计单词
  -i 不区分大小写
  -c 过滤内容的总行数

过滤以m开头的行

$ grep "^m" test.txt

过滤以m结尾的行

$ grep "m$" test.txt

排除空行, 并打印行号

$ grep -vn "^$" test.txt

匹配任意一个字符,不包括空行

$ grep "." test.txt

匹配所有

$ grep ".*" test.txt

匹配单个任意字符

$ grep "lizhen.a" test.txt

以点结尾的

$ grep "\.$" test.txt

精确匹配到

$ grep -o "8*" test.txt

匹配有abc的行

$ grep "[abc]" test.txt

匹配数字所在的行"[0-9]"

$ grep "[0-9]" test.txt

匹配所有小写字母[a-z]

$ grep "[a-z]" test.txt

重复8三次

$ grep "8\{3\}" test.txt

重复数字8, 3-5次

$ grep -E "8{3,5}" test.txt

至少1次或1次以上

$ grep -E "8{1,}" test.txt


四剑客之sed

sed命令格式

sed [options] 'command' file(s)

sed正则使用

与 grep一样,sed 在文件中查找模式时也可以使用正则表达式(RE)和各种元字符。

正则表达式是括在斜杠间的模式,用于查找和替换,以下是sed支持的元字符。

使用基本元字符集 ^, $, ., *, [], [^], < >, (), {}

使用扩展元字符集 ?, +, { }, |, ( )

使用扩展元字符的方式 + sed -r

sed选项参数

-e 允许多项编辑
-n 取消默认的输出
-i 直接修改对应文件
-r 支持扩展元字符

sed内置命令参数

a    `  在当前行后添加一行或多行
c   在当前行进行替换修改
d   在当前行进行删除操作
i   在当前行之前插入文本
p   打印匹配的行或指定行
n   读入下一输入行,从下一条命令进行处理
!   对所选行以外的所有行应用命令
h   把模式空间里的内容重定向到暂存缓冲区
H   把模式空间里的内容追加到暂存缓冲区
g   取出暂存缓冲区的内容,将其复制到模式空间,覆盖该处原有内容
G   取出暂存缓冲区的内容,将其复制到模式空间,追加在原有内容后面

先删除行,然后管道给后面的sed进行替换

$ sed '1,9d' passwd |sed 's#root#alex#g'

使用-e进行多次编辑修改操作

$  sed -e '1,9d' -e 's#root#alex#g' passwd

打印命令p

打印匹配halt的行

$  sed -n  '/halt/p' passwd

打印第二行的内容

$ sed -n  '2p' passwd

打印最后一行

$ sed -n  '$p' passwd

追加命令a

给30行添加配置 \t tab键(需要转义) \n 换行符

$ sed -i  '30a listen 80;' passwd

修改命令c

指定某行进行内容替换

$ sed  -i '7c SELINUX=Disabled' /etc/selinux/config

正则匹配对应内容, 然后进行替换

$ sed -i '/^SELINUX=/c SELINUX=Disabled' /etc/selinux/config

非交互式修改指定的配置文件

$ sed -ri '/UseDNS/cUseDNS no' /etc/ssh/sshd_config
$ sed -ri '/GSSAPIAuthentication/c#GSSAPIAuthentication no' /etc/ssh/sshd_config
$ sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config

删除命令d

指定删除第三行, 但不会改变文件内容

$ sed '3d' passwd
$ sed '3{d} passwd'

从第三行删除到最后一行

$ sed '3,$d' passwd

删除最后一行

$ sed '$d' passwd

删除所有的行

$ sed '1,$d' passwd

匹配正则进行该行删除

$ sed /mail/d passwd

插入命令i

在文件的某一行上面添加内容

$ sed -i  '30i listen 80;' passwd

写文件命令w

将匹配到的行写入到新文件中

$ sed -n '/root/w newfile' passwd

将passwd文件的第二行写入到newfile中

$ sed -n '2w newfile' passwd

获取下一行命令n

匹配root的行, 删除root行的下一列

$ sed '/root/{n;d}' passwd

替换匹配root行的下一列

$ sed '/root/{n; s/bin/test/}' passwd

暂存和取用命令h H g G

g: 将hold space中的内容拷贝到pattern space中,原来pattern space里的内容被覆盖
G:将hold space中的内容append到pattern space\n后
h: 将pattern space中的内容拷贝到hold space中,原来hold space里的内容被覆盖
H: 将pattern space中的内容append到hold space\n后
d: 删除pattern中的所有行,并读入下一新行到pattern中
D: 删除multiline pattern中的第一行,不读入下一行

将第一行的写入到暂存区, 替换最后一行的内容

$ sed  '1h;$g' /etc/hosts

将第一行的写入到暂存区, 在最后一行调用暂存区的内容

$ sed  '1h;$G' /etc/hosts

将第一行的内容删除但保留至暂存区, 在最后一行调用暂存区内容追加至于尾部

$ sed -r '1{h;d};$G' /etc/hosts

将第一行的内容写入至暂存区, 从第二行开始进行重定向替换

$ sed -r '1h;2,$g' /etc/hosts

将第一行重定向至暂存区, 2-3行追加至暂存区, 最后追加调用暂存区的内容

$ sed -r '1h; 2,3H; $G' /etc/hosts

sed简介

sed是面向流的行编辑器。所谓面向流,是指接受标准输入的输入,输出内容到标准输出上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。

具体过程如下:sed将处理的行读入到一个临时缓存区中(也称为模式空间pattern space),sed中的命令依次执行,直到所有命令执行完毕,完成后把该行发送到屏幕上,清理pattern space中的内容;接着重复刚才的动作,读入下一行,直到文件处理结束。

sed每处理完一行就将其从pattern space中删除,然后将下一行读入,进行处理和显示。处理完输入 文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。

sed执行流程图

什么是Pattern Space,Hold Space

Pattern Space相当于车间,sed把流内容在这里进行处理,Hold Space相当于仓库,加工的半成品在这里进行临时存储。

由于各种原因,比如用户希望在某个条件下脚本中的某个命令被执行,或者希望模式空间得到保存以便下一次处理,都有可能使得sed在处理文件的时候不按照正常的流程来进行。这个时候,sed设置了一些高级命令来满足用户的要求。

一些高级命令

g: 将hold space中的内容拷贝到pattern space中,原来pattern space里的内容被覆盖

G:将hold space中的内容append到pattern space\n后

h: 将pattern space中的内容拷贝到hold space中,原来hold space里的内容被覆盖

H: 将pattern space中的内容append到hold space\n后

d: 删除pattern中的所有行,并读入下一新行到pattern中

D: 删除multiline pattern中的第一行,不读入下一行

图解sed ‘1!G;h;$!d’ file

1!G 第一行不执行G命令,从第二行开始执行

$!d 最后一行不删除

640.png

反向选择命令!

除了第三行,其他全部删除

$ sed -r '3!d' /etc/hosts

sed匹配替换

s 替换命令标志
g 行内全局替换
i 忽略替换大小写
替换命令`s`

替换每行出现的第一个root

$ sed 's/root/alice/' passwd

替换以root开头的行

$ sed 's/^root/alice/' passwd

查找匹配到的行, 在匹配的行后面添加内容

$ sed -r 's/[0-9][0-9]$/& .5/' passwd

匹配包含有root的行进行替换

$ sed -r 's/root/alice/g' passwd

匹配包含有root的行进行替换,忽略大小写

$ sed -r 's/root/alice/gi' /etc/passwd

后向引用

$ sed -r 's#(Roo)#\1-alice#g' passwd
$ ifconfig eth0|sed -n '2p'|sed -r 's#(^.*et) (.*) (net.*$)#\2#g'
示例文件内容如下:
$ vim a.txt
/etc/abc/456
etc
删除文本中的内容,需加转义
$ sed -r '\/etc\/abc\/456/d' a.txt
如果碰到/符号, 建议使用#符替换
$ sed -r 's#/etc/abc/456#/dev/null#g' a.txt
$ sed -r 's@/etc/abc/456@/dev/null@' a.txt

删除文件

删除配置文件中#号开头的注释行, 如果碰到tab或空格是无法删除

$ sed '/^#/d' file

删除配置文件中含有tab键的注释行

$ sed -r '/^[ \t]*#/d' file

删除无内容空行

$ sed -r '/^[ \t]*$/d' file

删除注释行及空行

$ sed -r '/^[ \t]*#/d; /^[ \t]*$/d' /etc/vsftpd/vsftpd.conf
$ sed -r '/^[ \t]*#|^[ \t]*$/d' /etc/vsftpd/vsftpd.conf
$ sed -r '/^[ \t]*($|#)/d' /etc/vsftpd/vsftpd.conf

给文件行添加注释

将第二行到第六行加上注释信息

$ sed '2,6s/^/#/' passwd

将第二行到第六行最前面添加#注释符

$ sed -r '2,6s/.*/#&/' passwd

添加#注释符

$ sed -r '3,$ s/^#*/#/' passwd


四剑客之awk

awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。

awk数据可以来自标准输入、一个或多个文件,或其它命令的输出。

awk通常是配合脚本进行使用, 是一个强大的文本处理工具

awk 的处理数据的方式

1.进行逐行扫描文件, 从第一行到最后一行
2.寻找匹配的特定模式的行,在行上进行操作
3.如果没有指定处理动作,则把匹配的行显示到标准输出
4.如果没有指定模式,则所有被操作的行都被处理

awk的语法格式

awk [options] 'commands' filenames
awk [options] -f awk-script-file filenames

选项 options

-F 定义输入字段分隔符,默认的分隔符, 空格或tab键
命令 command
行处理前    行处理   行处理后
BEGIN{}      {}     END{}
BEGIN发生在读文件之前
[root@Shell ~]# awk 'BEGIN{print 1/2}'
0.5
BEGIN在行处理前, 修改字段分隔符
[root@Shell ~]# awk 'BEGIN{FS=":"} {print $1}' /etc/passwd
BEGIN在行处理前, 修改字段读入和输出分隔符
[root@Shell ~]# awk 'BEGIN{FS=":";OFS="---"} {print $1,$2}' /etc/passwd
[root@Shell ~]# awk 'BEGIN{print 1/2} {print "ok"} END {print "Game Over"}'  /etc/hosts
0.5
ok
ok
ok

awk 命令格式

匹配 awk 'pattern' filename

$ awk '/root/' /etc/passwd

处理动作 awk '' filename

$ awk -F: '{print $1}' /etc/passwd

匹配+处理动作 awk 'pattern ' filename

$ awk -F ':' '/root/ {print $1,$3}' /etc/passwd
$ awk 'BEGIN{FS=":"} /root/{print $1,$3}' /etc/passwd

判断大于多少则输出什么内容 command |awk 'pattern '

$  df |awk '/\/$/ {if ($3>50000) print $4}'

Awk 工作原理

$ awk -F: '{print $1,$3}' /etc/passwd
1.awk将文件中的每一行作为输入, 并将每一行赋给内部变量`$0`, 以换行符结束
2.awk开始进行字段分解,每个字段存储在已编号的变量中,从`$1`开始[默认空格分割]
3.awk默认字段分隔符是由内部`FS`变量来确定, 可以使用`-F`修订
4.awk行处理时使用了`print`函数打印分割后的字段
5.awk在打印后的字段加上空格,因为`$1,$3` 之间有一个逗号。逗号被映射至`OFS`内部变量中,称为输出字段分隔符, `OFS`默认为空格.
6.awk输出之后,将从文件中获取另一行,并将其存储在`$0`中,覆盖原来的内容,然后将新的字符串分隔成字段并进行处理。该过程将持续到所有行处理完毕.

Awk 内部变量

$0保存当前记录的内容*
awk '{print $0}' /etc/passwd
NR记录输入总的编号(行号)*
$ awk '{print NR,$0}' /etc/passwd
$ awk 'NR<=3' /etc/passwd
FNR当前输入文件的编号(行号)*
$ awk '{print NR,$0}' /etc/passwd /etc/hosts
$ awk '{print FNR,$0}' /etc/passwd /etc/hosts
NF保存行的最后一列*
$ awk -F ":" '{print NF,$NF}' /etc/passwd /etc/hosts
FS指定字段分割符, 默认是空格*
以冒号作为字段分隔符
$ awk -F: '/root/{print $1,$3}' /etc/passwd
$ awk 'BEGIN{FS=":"} {print $1,$3}' /etc/passwd
以空格冒号tab作为字段分割
$ awk -F'[ :\t]' '{print $1,$2,$3}' /etc/passwd
OFS指定输出字段分隔符*
逗号映射为OFS, 初始情况下OFS变量是空格
$ awk -F: '/root/{print $1,$2,$3,$4}' /etc/passwd
$ awk 'BEGIN{FS=":"; OFS="+++"} /^root/{print $1,$2}' /etc/passwd
RS输入记录分隔符,默认为换行符[了解]*
$ awk -F: 'BEGIN{RS=" "} {print $0}' /etc/hosts
ORS将文件以空格为分割每一行合并为一行[了解]*
$ awk -F: 'BEGIN{ORS=" "} {print $0}' /etc/hosts
print 格式化输出函数*
$ date|awk '{print $2,"5月份""\n",$NF,"今年"}'
$ awk -F: '{print "用户是:" $1 "\t 用户uid: " $3  "\t 用户gid:" $4}' /etc/passwd
printf 函数
$  awk -F: '{printf "%-15s %-10s %-15s\n", $1, $2, $3}' /etc/passwd
%s 字符类型
%d 数值类型
占 15 字符
- 表示左对齐,默认是右对齐
- printf 默认不会在行尾自动换行,加\n

Awk 模式动作

awk语句都由模式和动作组成。
模式部分决定动作语句何时触发及触发事件。
如果省略模式部分,动作将时刻保持执行状态。模式可以是条件语句或复合语句或正则表达式。
*1.正则表达式*
匹配记录(整行)
[root@Shell ~]# awk '/^root/' /etc/passwd
[root@Shell ~]# awk '$0 ~ /^root/' /etc/passwd
匹配字段:匹配操作符(~ !~)
[root@Shell ~]# awk '$1~/^root/' /etc/passwd
[root@Shell ~]# awk '$NF !~ /bash$/' /etc/passwd
*2.比较表达式*
比较表达式采用对文本进行比较,只有当条件为真,才执行指定的动作。
比较表达式使用关系运算符,用于比较数字与字符串。
关系运算符
运算符   含义       示例
<       小于          x<y
<=      小于或等于     x<=y
==      等于          x==y
!=      不等于         x!=y
>=      大于等于        x>=y
>       大于          x>y
uid为0的列出来
[root@Shell ~]# awk -F ":" '$3==0' /etc/passwd
uid小于10的全部列出来
[root@Shell ~]# awk -F: '$3 < 10' /etc/passwd
用户登陆的shell等于/bin/bash
[root@Shell ~]# awk -F: '$7 == "/bin/bash" ' /etc/passwd
第一列为alice的列出来
[root@Shell ~]# awk -F: '$1 == "alice" ' /etc/passwd
为alice的用户列出来
[root@Shell ~]# awk -F: '$1 ~ /alice/ ' /etc/passwd
[root@Shell ~]# awk -F: '$1 !~ /alice/ ' /etc/passwd
磁盘使用率大于多少则,则打印可用的值
[root@Shell ~]# df |awk '/\/$/'|awk '$3>1000000 {print $4}'
*3.条件表达式*
[root@Shell ~]# awk -F: '$3>300 {print $0}' /etc/passwd
[root@Shell ~]# awk -F: '{if($3>300) print $0}' /etc/passwd
[root@Shell ~]# awk -F: '{if($3>5555){print $3} else {print $1}}' /etc/passwd
*4.运算表达式*
[root@Shell ~]# awk -F: '$3 * 10 > 500000' /etc/passwd
[root@Shell ~]# awk -F: 'BEGIN{OFS="--"} { if($3*10>50000) {print $1,$3} } END {print "打印ok"}' /etc/passwd
[root@Shell ~]# awk '/southem/{print $5 + 10}' datafile 
[root@Shell ~]# awk '/southem/{print $5 + 10.56}' datafile
[root@Shell ~]# awk '/southem/{print $8 - 10}' datafile 
[root@Shell ~]# awk '/southem/{print $8 / 2 }' datafile  
[root@Shell ~]# awk '/southem/{print $8 * 2 }' datafile 
[root@Shell ~]# awk '/southem/{print $8 % 2 }' datafile
*5.逻辑操作符和复合模式*
&&逻辑与 || 逻辑或  !逻辑非
匹配用户名为root并且打印uid小于15的行
[root@Shell ~]# awk -F: '$1~/root/ && $3<=15' /etc/passwd 
匹配用户名为root或uid大于5000
[root@Shell ~]# awk -F: '$1~/root/ || $3>=5000' /etc/passwd
# awk '/west/' datafile
# awk '/^north/' datafile
# awk '$3 ~ /^north/' datafile
# awk '/^(no|so)/' datafile
# awk '{print $3,$2}' datafile
# awk '{print $3 $2}' datafile
# awk '{print $0}' datafile
# awk '{print "Number of fields: "NF}' datafile
# awk '/northeast/{print $3,$2}' datafile
# awk '/^[ns]/{print $1}' datafile
# awk '$5 ~ /\. [7-9]+/' datafile
# awk '$2 !~ /E/{print $1,$2}' datafile
# awk '$3 ~ /^Joel/{print $3 "is a nice boy."}' datafile
# awk '$8 ~ /[0-9][0-9]$/{print $8}' datafile
# awk '$4 ~ /Chin$/{print "The price is $" $8 "."}' datafile
# awk '/Tj/{print $0}' datafile
# awk -F: '{print "Number of fields: "NF}' /etc/passwd
# awk -F"[ :]" '{print NF}' /etc/passwd

Awk条件判断

if语句格式:{ if(表达式){语句;语句;... }}
打印当前管理员用户名称
[root@Shell ~]# awk -F: '{ if($3==0){print $1 "is adminisitrator"} }' /etc/passwd
统计系统用户数量
[root@Shell ~]# awk -F: '{ if($3>0 && $3<1000){i++}} END {print i}' /etc/passwd
统计普通用户数量
[root@Shell ~]# awk -F: '{ if($3>1000){i++}} END {print i}' /etc/passwd
if...else 语句格式: {if(表达式){语句;语句;... }else{语句;语句;...}}
# awk -F: '{if($3==0){print $1} else {print $7}}' /etc/passwd
# awk -F: '{if($3==0) {count++} else{i++} }' /etc/passwd
# awk -F: '{if($3==0){count++} else{i++}} END{print " 管理员个数: "count ; print " 系统用户数: "i}' /etc/passwd
if...else if...else 语句格式:
{if(表达式 1){语句;语句;... }else if(表达式 2){语句;语句;. .. }else{语句;语句;... }}
[root@Shell ~]# awk -F: '{ if($3==0){i++} else if($3>0 && $3<1000){j++} else if($3>1000) {k++}} END {print i;print j;print k}' /etc/passwd
[root@Shell ~]# awk -F: '{ if($3==0){i++} else if($3>0 && $3<1000){j++} else if($3>1000) {k++}} END {print "管理员个数"i; print "系统用户个数" j; print "系统用户个 数" }' /etc/passwd
管理员个数1
系统用户个数29
系统用户个数69

Awk循环语句

while循环
$ awk 'BEGIN{ i=1; while(i<=10){print i; i++} }'
$ awk -F: '{i=1; while(i<=NF){print $i; i++}}' /etc/passwd
$ awk -F: '{i=1; while(i<=10) {print $0; i++}}' /etc/passwd
$ cat b.txt
111 222
333 444 555
666 777 888 999
$ awk '{i=1; while(i<=NF){print $i; i++}}' b.txt
for循环
C 风格 for
[root@Shell ~]# awk 'BEGIN{for(i=1;i<=5;i++){print i} }'
将每行打印 10 次
$ awk -F: '{ for(i=1;i<=10;i++) {print $0} }' passwd
$ awk -F: '{ for(i=1;i<=NF;i++) {print $i} }' passwd

awk数组概述

将需要统计的某个字段作为数组的索引,然后对索引进行遍历

统计`/etc/passwd`中各种类型`shell` 的数量*
$ awk -F: '{shells[$NF]++} END{ for(i in shells){print i,shells[i]} }' /etc/passwd
站访问状态统计<当前时实状态ss>*
$ ss -an|awk '/:80/{tcp[$2]++} END {for(i in tcp){print i,tcp[i]}}'
统计当前访问的每个IP的数量<当前时实状态 netstat,ss>*
$ ss -an|awk -F ':' '/:80/{ips[$(NF-1)]++} END {for(i in ips){print i,ips[i]}}'

Awk数组案例

统计2019年01月25日,当天的PV量
[root@Shell ~]# grep "25/Jan/2018" log.bjstack.log |wc -l
[root@Shell ~]# awk "/25\/Jan\/2018/" log.bjstack.log |wc -l
[root@Shell ~]# awk '/25\/Jan\/2018/ {ips[$1]++} END {for(i in ips) {sum+=ips[i]} {print sum}}' log.bjstack.log
统计15-19点的pv量
$  awk '$4>="[25/Jan/2019:15:00:00" && $4<="[25/Jan/2018:19:00:00 {print $0}"' log.bjstack.log |wc -l
统计15-19点访问次数最多的10个IP
$ awk '$4>="[25/Jan/2018:15:00:00" && $4<="[25/Jan/2018:19:00:00"' log.bjstack.log |awk '{ips[$1]++} END {for(i in ips){print ips[i],i}}'|sort -rn|head
统计2019年01月25日,各种状态码数量,统计状态码出现的次数
$ awk '{code[$9]++} END {for(i in code){print i,code[i]}}' log.bjstack.log
$  awk '{if($9>=100 && $9<200) {i++}
else if ($9>=200 && $9<300) {j++}
else if ($9>=300 && $9<400) {k++}
else if ($9>=400 && $9<500) {n++}
else if($9>=500) {p++}}
END{print i,j,k,n,p,i+j+k+n+p}' log.bjstack.log

四剑客之find 语法

find 在哪里找 -类型 f -名字 "国产"

-name     # 按名称查找 test.txt
-iname    # 查找到的内容不区分大小写
-size     # 按照大小查找 -b -k -M -G
-maxdepth # 按最大的深度等级查找
-mtime    # 按照文件的修改时间查找modify
-类型 -type
  f  普通文件
  d  目录
按名称查找
find /tmp/ -type f -name "test.txt"
按文件的后缀查找  所有.txt结尾的文件
find /tmp/ -type f -name "*.txt"
不区分大小写搜索
find /tmp/ -type f -iname "*.txt"
按照大小查找 -size
find ./ -type f -size +100k   # 查找当前目录 大小100k的文件
按时间查找
find  -type f -mtime +7 -mtime -30  #查找7-30内的文件

移动

find ./ -type f -size +1M|xargs -i mv {} /tmp   
mv `find /tmp/ -type f -name "7.txt"` .     
find /tmp/ -type f -name 8.txt -exec mv {} /opt \;

删除

find /tmp/ -type f -name "5.txt"|xargs rm
rm `find ./ -type f -name 7.txt`
find ./ -type f -name "3.txt" -exec rm {} \;

复制

find /tmp/ -type f -name "6.txt"|xargs -i cp {} .
cp `find /tmp/ -type f -name 8.txt` .       
find ./ -type f -name "4.txt" -exec cp {} /tmp \;

序列匹配

find /tmp -type f -name '[1-8].txt'    # 匹配1-8以.txt结尾
相关文章
|
3天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
18 3
|
3天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
16 2
|
24天前
|
运维 安全 Linux
Linux中传输文件文件夹的10个scp命令
【10月更文挑战第18天】本文详细介绍了10种利用scp命令在Linux系统中进行文件传输的方法,涵盖基础文件传输、使用密钥认证、复制整个目录、从远程主机复制文件、同时传输多个文件和目录、保持文件权限、跨多台远程主机传输、指定端口及显示传输进度等场景,旨在帮助用户在不同情况下高效安全地完成文件传输任务。
171 5
|
24天前
|
Linux
Linux系统之expr命令的基本使用
【10月更文挑战第18天】Linux系统之expr命令的基本使用
72 4
|
11天前
|
缓存 监控 Linux
|
14天前
|
Linux Shell 数据安全/隐私保护
|
15天前
|
域名解析 网络协议 安全
|
21天前
|
运维 监控 网络协议
|
22天前
|
监控 Linux Shell
|
3天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
18 3