1 遍历目录
cd:change dicrectory的缩写
.或者./代表当前目录,..或../代表上一级目录,cd -代表进入上一次的目录。
2 文件和目录列表
ls:list的缩写,会显示目录下的文件。
用法:ls [-laFR] [dir],其中-F表示在目录后加/表示区分,-R为递归显示。
3 处理文件
3.1 创建文件touch
命令格式:touch [-acdfmrt] 文件
命令参数:
-a 或--time=atime或--time=access或--time=use 只更改存取时间
-c 或--no-create 不建立任何文档
-d 使用指定的日期时间,而非现在的时间
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间
命令功能:
touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间
使用范例:
实例一:创建不存在的文件
touch a.log b.log 一次建立了两个日志文件
3.2 复制文件cp
命令格式:cp [-ipru] [file/dir]
命令参数:
-i 覆盖文件之前先询问
-p 保留源文件或目录的属性,包括所有者、所属组、权限与时间
-r 递归处理,将指定目录下的文件及子目录一并处理,通常用作复制目录
-u 使用这项参数之后,只会在源文件的修改时间(Modification Time)较目的文件更新时,或是名称相互对应的目的文件并不存在,才复制文件
命令功能:
cp可用于文件或者目录的拷贝
使用范例:
[root@leon data]# cp -p ett.xtx tte.txt 保留文件属性拷贝,并更名为tte.txt
3.3 移动或重命名文件mv
命令格式:mv [-bfiut] [file/dir]
命令参数:
-f force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i 若目标文件 (destination) 已经存在时,就会询问是否覆盖
-u 若目标文件已经存在,且 source 比较新,才会更新(update)
命令功能:
mv命令可用于修改文件或者目录的名字
使用范例:
[root@leon data]# mv tte.txt changename.txt 修改tte.txt的名字
3.4 删除文件rm
命令格式:rm [-irf] [file/dir]
命令参数:
-i 进行任何删除操作前必须先确认
-f 强制删除
-r 递归删除
命令功能:
rm用于删除文件,一般常和find在一起使用,这点我们在find用法中会讲到。
使用范例:
[root@leon data]# rm -fr test/
4 处理目录
4.1 创建目录mkdir
命令格式:mkdir [-mpv] [dir]
命令参数:
-m mode,为目录指定访问权限,与chmod类似
-p 如果目录已经存在,则不会有错误提示。若父目录不存在,将会创建父目录。该选项常用于创建级联目录。
-v 为每个目录显示提示信息
命令功能:
创建单个目录或者级联目录。
使用范例:
[root@leon data]# mkdir -p blog/{bin,lib,var/{etc,doc,logfile}}
[root@leon data]# tree blog/
blog/
├── bin
├── lib
└── var
├── doc
├── etc
└── logfile
4.2 删除目录rmdir
默认情况下rmdir命令只是用来删除空目录的,非空目录的删除需要用rm -fr来递归删除,这样用的风险很大,所以一般会和find联合使用。
5 查看文件
5.1 cat命令
命令格式:cat [-nbT] [file]
命令参数:
-n 给所有的行加上行号
-b 只给文本加上行号
-T 不显示制表符,用^I代替
命令功能:
查看整个文件内容
5.2 more/less
命令功能:
分页显示,比cat更方便。
5.3 查看部分文件
5.3.1 tail命令
命令参数:
-n 显示最后多少行的信息
命令功能:
显示尾部XXX行信息
使用范例:
[root@leon data]# tail -n 3 a.txt
18
19
20
5.3.2 head命令
命令参数:
同tail
命令功能:
显示头部XXX行信息
使用范例:
[root@oldboy data]# head -n 3 a.txt
1
2
3
6 find查找命令
命令格式:find [路径] [参数选项]
命令参数:
-name 按照文件名查找文件。
find /data -name filename 在/data目录及其子目录下面查找名字为filename的文件
find . -name "*.sh" 在当前目录及其子目录(用“.”表示)中查找任何扩展名为“sh”的文件
-perm 按照文件权限来查找文件。
find . -perm 755 在当前目录下查找文件权限位为755的文件
-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
find /apps -path "/apps/bin" -prune 在/apps目录下查找文件,但不希望在/apps/bin目录下查找
-user 按照文件属主来查找文件
find ~ -user root 在$HOME目录中查找文件属主为sam的文件
-group 按照文件所属的组来查找文件
-mtime 按照文件的更改时间来查找文件
+7:表示7天以前
-7:最近七天
7:第七天
-type 按照文件类型查找
b - 块设备文件
d - 目录
c - 字符设备文件
p - 管道文件
l - 符号链接文件
f - 普通文件
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计
find与xargs
在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定
find删除
[root@leon home]# find . -type f -name "*.txt" | xargs rm -f (推荐删除)
find+sed
[root@leon data]# find . -type f -name "*.sh" | xargs sed ‘s/oldboy/oldgirl/g‘
参考资料:
https://www.cnblogs.com/skynet/archive/2010/12/25/1916873.html
https://www.cnblogs.com/peida/archive/2012/11/16/2773289.html