文章目录
一、目录管理
1. 路径名
- 文件.与…
在目录表中确实有两个文件,这两个目录项由系统创建和删除。 - 主目录Home Directory
每个用户都有自己独立的主目录
用env
命令查看环境变量HOME的值 - 绝对路径名与相对路径名
路径分隔符用/
- 当前工作目录
是进程属性的一部分,每进程一个
2. 打印pwd/改变cd当前目录
- pwd:打印当前工作目录
~
也可以实现这个功能 - cd(Change Directory):改变当前工作目录
cd ..
返回上级目录cd
不加参数 回到用户主目录Homecd -
回到最近的工作目录- cd是shell的一个内部命令
3. 创建mkdir/删除目录rmdir
- 创建目录mkdir
除了创建目录外,系统会自动建立文件.
和..
选项-p
自动创建路径中不存在的目录,例如home文件夹下没有目录,但是使用命令mkdir -p home/a/b/c/log
会自动创建a、b、c、log目录 - 删除目录rmdir
要求被删除的目录只含.
和..
两个文件选项
-r
递归地删除目录
4. 复制目录cp
-
选项
-r
递归地复制一个目录
cp -r dir1 dir2
- 若dir2不存在,则新建子目录dir2,把dir1的内容拷贝到dir2下
cp -r dir1 dir2
- 若dir2已存在,则在dir2下新建子目录dir1,把dir1内容拷贝到dir2/dir1下
cp -r dir1/* dir2
- 若dir2不存在,则新建子目录dir2,把dir1的内容拷贝到dir2下
-
选项
-v
冗长verbose方式
复制目录时实时列出正在复制的文件的名字
-
选项
-u
增量拷贝update,便于备份目录- 根据文件的时间戳,不拷贝相同的或者过时的版本的文件,以提高速度;
- dir1和dir2不慎颠倒位置,也不会发生灾难性后果
-
示例:已存在a、b文件夹,不存在c文件夹
-
touch:将文件最后一次修改时间设置为当前时间,但是不修改文件内容
二、目录遍历的命令find
find
从指定的查找范围开始,递归地查找子目录,凡满足条件的文件或目录,执行规定的动作
对文件通配符的解释由find
完成
例如find sdir1 sdir2 -name '*.c' -print
范围:sdir1和sdir2是当前目录的两个子目录;
条件:与名字‘*.c’匹配,要注意引号的使用;
动作:print 把查找到的文件的路径名打印出来
1. 条件选项
1)-name
匹配文件名,即路径中最后一部分
2)-regex
匹配整个路径名
有的会提示找不到该命令
3)-type
-type的选项有
f
:普通文件 d
:目录 l
:符号连接文件
c
:字符设备文件 b
:块设备文件 p
:管道文件
4)-size
限制查找的文件大小
-size +n单位
:大于
-size -n单位
:小于
不加加减号表示等于
- 单位:c(字符),b(块,512字节),k(1024),M(兆),G(吉)。默认为b
5)-mtime
-mtime +ndays
-mtime -ndays
:文件最近修改时间,days不用出现在命令中
6)-newer file
查找文件最近修改时间比file晚的文件
7)其他条件选项
可以查阅find手册,man find
8)复合条件
注意空格
可以用
()
表示多条件的与-o
表示或
\( \)
与命令之间要注意空格
!
表示非
2. 动作选项
1)-print
打印查找到的文件的路径名
2)-exec
对查找到的目标执行命令;
在-exec
及随后的分号;
之间的内容作为一条命令;
在这命令的命令参数中,{}
代表遍历到的目标文件的路径名,中间没有空格
{}
之间没有空格,{}
与\;
之间有一个空格
3)-ok
与-exec类似,只是每次执行命令之前需要用户的确认
三、批量处理文件
例如:
find . -name '*.c' -print | xargs grep -n -- --help
中的xargs
可以实现将查到找的文件名列表追加给grep命令
这就实现了find精确筛选,利用grep批量处理文件。
- xargs:将标准输入组织成命令执行
选项-n
可以指定每批处理多少个文件
可以解决shell文件名生成时,因为文件太多,缓冲区空间受限而文件名展开失败的问题;
四、打包与压缩
1. tar:文件归档
tar(Tape ARchive)
tar ctxv[f device] file-list
文件名后缀.tar,.tar.gz,.tar.bz2仅仅是惯例,不是系统级强制要求
1)功能选项
- 选项
-c
:create 创建一个新的磁带 - 选项
-t
:list 列出待打包的文件列表 - 选项
-x
:extract 从磁带中抽取指定的文件
2)其它选项
v
:verbose冗长,每处理一个文件,就打印出文件的文件名,并在该名前冠以功能字母f
:File,后面要紧跟设备文件名z
:压缩算法gzipj
:压缩算法bzip2
压缩算法gzip执行速度比bzip2快,但是bzip2的压缩效率比gzip高,也占用更多的CPU时间
举例:
tar cvf /dev/rct0 .
将当前目录树.
备份到设备/dev/rct0
tar tvf /dev/rct0
查看磁带设备/dev/rct0
上的文件目录
tar xvf /dev/rct0
将磁带设备/dev/rct0
上的文件恢复到文件系统中