一、查找文件
1.find
find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。
查找目录:find /(查找范围) -name '查找关键字' -type d
查找文件:find /(查找范围) -name 查找关键字 -print
2.grep
grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。
基本格式:find expression
[options]主要参数:
-c:只输出匹配行的计数。
-i:不区分大小写
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
.:所有的单个字符。
* :有字符,长度可以为0。
实例:grep -r "字符串" 很方便
grep 'test' d* #显示所有以d开头的文件中包含 test的行 grep ‘test’ aa bb cc #显示在aa,bb,cc文件中包含test的行 grep ‘[a-z]\{5\}’ aa #显示所有包含每行字符串至少有5个连续小写字符的字符串的行 grep magic /usr/src #显示/usr/src目录下的文件(不含子目录)包含magic的行 grep -r magic /usr/src #显示/usr/src目录下的文件(包含子目录)包含magic的行 grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
3.which
which查看可执行文件的位置 ,只有设置了环境变量的程序才可以用
4.whereis
whereis寻找特定文件,只能用于查找二进制文件、源代码文件和man手册页
5.locate
locate配合数据库查看文件位置 ,详情:locate -h查看帮助信息
二、拷贝文件
命令格式:
cp [-adfilprsu] 源文件(source) 目标文件(destination)
cp [option] source1 source2 source3 ... directory
参数说明:
-a:是指archive的意思,也说是指复制所有的目录
-d:若源文件为连接文件(link file),则复制连接文件属性而非文件本身
-f:强制(force),若有重复或其它疑问时,不会询问用户,而强制复制
-i:若目标文件(destination)已存在,在覆盖时会先询问是否真的操作
-l:建立硬连接(hard link)的连接文件,而非复制文件本身
-p:与文件的属性一起复制,而非使用默认属性
-r:递归复制,用于目录的复制操作
-s:复制成符号连接文件(symbolic link),即“快捷方式”文件
-u:若目标文件比源文件旧,更新目标文件
如将/test1目录下的file1复制到/test3目录,并将文件名改为file2,可输入以下命令:
cp /test1/file1 /test3/file2
举例:先判断文件"myFile"是否存在,如果不存在则拷贝文件到目标文件夹下
#!/bin/sh myFile="/root/apue/series_migration_task.xml" # 这里的-f参数判断$myFile是否存在 if [ ! -f "$myFile" ]; then cp ./series_migration_task.xml /root/apue/ fi echo "success"
三、移动文件
命令格式:mv [-fiv] source destination
参数说明:
-f:force,强制直接移动而不询问
-i:若目标文件(destination)已经存在,就会询问是否覆盖
-u:若目标文件已经存在,且源文件比较新,才会更新
如将/test1目录下的file1复制到/test3 目录,并将文件名改为file2,可输入以下命令:
mv /test1/file1 /test3/file2
四、删除文件
命令格式:rm [fir] 文件或目录
参数说明:
-f:强制删除
-i:交互模式,在删除前询问用户是否操作
-r:递归删除,常用在目录的删除
如删除/test目录下的file1文件,可以输入以下命令:
rm -i /test/file1
五、查看进程
1.查看端口占用的进程
lsof -i:端口号, 查看某一端口的占用情况
netstat -ntlp:查看当前所有tcp端口
netstatstat -tunlp | grep 端口号:查看端口占用情况
2.根据程序名称查询进程ID
ps -ef | grep 进程名
ps -ef :显示所有进程
参考文献:
【1】linux find 命令查找文件和文件夹 - jiftle - 博客园
【2】linux - shell脚本实现判断文件是否存在,然后不存在则拷贝文件 - SegmentFault 思否
【3】linux下文件的复制、移动与删除 - _jackie - 博客园
【4】shell 一 判断文件是否存在 创建文件 拷贝文件