文件管理

列出当前文件

ls [optional] [file/dir]

命令 描述
ls 列出当前目录下所有文件和目录
ls file 列出文件项
ls dir 列出目录下的所有文件项
选项 描述
-F 列出的如果是目录则在名字后以斜线/表示,可执行文件*,符号连接文件@,普通文件无标记
-l 以长格式显示信息
-a 列出文件名首字符为圆点的文件,默认情况下不列出
-A 与-a类似,不列出.和..
-s 列出文件占用的磁盘空间
-i 列出文件的i节点号
-h 以便于人阅读的方式打印数值
-d 当ls参数是目录时,列出目录自身信息

长格式列表

input: ls -l arg
output: -rwxr-x–x 1 liang stud 519 Jul 5 15:02 arg

  • 第一列:文件属性: 文件类型+文件的访问权限(rwx)(用户,与用户同组的用户,与该用户不同组的用户)
符号 文件类型
- 普通文件
d 目录
l 符号连接文件
b 块设备文件
c 字符设备文件
p 命名管道文件
  • 第二列: 文件link数,涉及到此文件的目录项数

  • 第3,4列: 用户名,该用户所在的组

  • 第5列

文件类别 描述
普通文件 列出文件大小
目录 列出目录表大小
符号连接文件 列出符号连接文件自身的长度
字符设备和块设备 列出主次设备号
管道文件 列出管道的数据长度
  • 第6列: 文件最后一次被修改的日期和时间

  • 第7列: 文件名,对于符号连接文件,附带列出符号连接文件的内容

文件的复制与删除

拷贝文件

cp file1 file2 或者 cp file1 file2… filen dir

  • 第二种格式,dir必须存在并且是目录
  • 第一种格式,file2不存在,则创建;file2存在且是文件,则覆盖,若是目录则按格式2处理。

移动文件

mv file1 file2 or mv file1 file2…filen dir or mv dir1 dir2

  • 使用mv命令可以将文件和目录改名
  • 可以将文件和从子目录从一个目录移动到另一个目录

删除文件

rm file1 file2…filen

选项 描述
-r recursive 递归地删除实参表中的目录
-i inform 没删除一个文件需要操作员确认
-f force 强迫删除,只读文件也被删除并且无提示

文件打包命令

tar ctxv [f device] file-list

选项 描述
-c create 创建新磁带,以前创建的会被覆盖
-t table 磁带的文件名列表。当不指定文件名时,将列出所有文件
-x eXtract 从磁带中抽取指定的文件,当不指定文件名时,抽取所有文件 -v verbose 每处理一个文件,就打印出文件的文件名,并在该文件名前冠以功能字母
f File指定设备文件名
z gzip 采用gzip压缩格式
j 采用bzip2算法

e.g. tar cvf my.tar *.[ch] makefile

e.g. tar czvf my.tar.gz *[ch] makefile

e.g. tar cjvf my.tar.bz2 *[ch] makefile

其他压缩/解压命令:

  • gzip/gunzip 执行速度快
  • bzip2/bunzip2 占用较多的cpu时间

目录操作

打印/改变当前目录

命令 描述
pwd print work directory 打印当前工作目录
cd dir 切换至dir
cd windows 打印当前目录,linux回到用户主目录
cd .. 回到上层目录

创建/删除目录

mkdir sun/work.d

  • -p 自动创建路径不存在的目录 mkdir -p database/2019/09/04/log

rmdir sum/work.d

  • 要求被删除的目录除.与..外无其他文件或目录
  • -r 递归的删除目录及其子目录?

复制目录

cp -r dir1 dir2

  • dir2 不存在,新建目录dir2,把dir1下内容拷贝至dir2下
  • dir2已存在,在dir2目录下新建dir1,把dir1内容拷贝纸dir2/dir1下
  • -v 实时显示正在复制的文件的名字
  • -u 增量拷贝,便于备份目录, 根据文件的时间戳,不拷贝相同的或者过时的版本文件,以提高拷贝速度。

touch

将文件最后一次修改时间设置为当前时间,但不改变文件。 touch *.[ch]

目录遍历 find

  • 功能: 从指定的查找范围开始,递归地查找子目录,凡满足条件的文件或者目录,执行规定的动作。
  • 动作
动作 描述
-print 打印查找的文件的路径名
-exec 对查找的目标执行某一命令 在-exec及随后的分号之间的内容作为一条命令,{}代表遍历道德目标文件的路径名
-ok 只是对查找到符合条件的目标执行前需要管理人员确认
xxx 自定义命令
  • 条件
命令 描述
-name wildcard 文件名与wildcare匹配,必须引号,文件名指的是路径名的最后一部分,对通配符的解释由find完成
-regex pattern 整个路径名与正则表达式pattern匹配
-type f/d/l/c/b/p 文件类型
-size +, , - N 文件大小,+ 大于,- 小于, 单位b,k,M
-mtime +, ,- ndays 文件最近修改时间
-newer file 文件修改时间比file的修改时间还晚
  • () -o ! 表示多条件的“与”,“或”,”非”

  • 示例: find verl.d ver2.d -name ‘*.c’ -print

    • 范围: 当前目录的子目录ver1.d和ver2.d
    • 条件: 与名字.c匹配。注:.c应当用引号括起来
    • 动作: 把查找的文件的路径打印出来