文章目录
一、目录管理
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上的文件恢复到文件系统中

本文详细介绍Linux系统下的目录管理,包括路径名的理解、当前工作目录的切换、目录的创建与删除、复制操作,以及find命令的高级使用,用于目录遍历和文件搜索。同时,文章还介绍了如何批量处理文件和使用tar命令进行打包与压缩。

1176

被折叠的 条评论
为什么被折叠?



