在我的另外一篇博客里已说过这两个命令的基础用法
复习一下
vim filename(直接开始编辑)
vi filename(进入vi之后使用i进入编辑模式)
在vi/vim下写完之后 Esc进入命令模式(停止编辑) 输入:wq保存并退出(vi中的!具有强制的意思 比如:q!就是不保存强制退出)
:set -nu # 显示行号
查找命令用whereis ;查找可执行程序用which ;通用的查找是 find ,用起来比较费 io
e.g.
find /home -name "*.txt" # 在/home目录下查找以.txt结尾的文件名
find /home -iname "*.txt" # 同上,但忽略大小写
find . -name "*.txt" -o -name "*.pdf" # 当前目录及子目录下查找所有以.txt和.pdf结尾的文件
find /usr/ -path "*local*" # 以正则表达式*local*匹配文件路径或者文件
find $HOME/. -name "*.txt" -ok rm {} \; # 找出目录dongmie1999下所有名为aaaaa的文件并删除,其中aaaaa可以是一个正则表达式
find ./ -size +2M # 在当前目录下寻找size大于2M的文件
否定参数
find /home ! -name "*.txt" # 找出/home下不是以.txt结尾的文件
vim保存指定行到文件
# 保存到其他文件,保存到的那个文件必须先存在才行,没有就 touch 创建一个
:2,5 w>> ./yourname.txt
# 保存指定行号到本文件
:9,16y # 复制9-16行
:20 # 光标移到文件的第20行
p # 粘贴到当前行
vim快速移动
:200 # 到200行
Ctrl + b 向上移动一屏
Ctrl + f 向下移动一屏
vim当前行号
:set nu # 文件显示行号
:f # 显示当前行号
vim删除指定行
# 多行删除
:32,65d # 删除32-65行,u 撤消修改或删除操作
# 单行删除
删除光标所在行,dd # u 撤消修改或删除操作
find查找指定递归深度
# 当前路径下不递归查找以.txt结尾的文件夹,-maxdepth 1 表示查找深度为1
find . -name “*.txt” -maxdepth 1
查找文件并移动
find . -name '10-*.dat' -exec mv {} ../ \;
这里:
=> -exec mv {} /mnt/mp3 \; - 运行mv命令。
=> {} - 字符 '{}' 代表find到的所有内容。
=>../表示当前用户目录的上一级目录
=> \; - 结束 /bin/mv 命令。
查找指定日期区间文件
find . -newermt '2020-02-29' ! -newermt '2020-03-09'
或
find . -atime -11 # 查找在系统中最后11天访问的文件
:<<!
atime是指access time,即文件被读取或者执行的时间
ctime即change time文件状态改变时间,指文件的inode被修改的时间,如通过chmod修改文件属性,ctime就会被修改。
mtime即modify time,指文件内容被修改的时间。
!
附: