Linux 文件与目录相关指令

在每个文件夹中,存在 . 和 .. 文件夹,这两个目录项由系统创建和删除,分别代表当前文件夹和上一级文件夹

文件与目录管理

  • pwd:打印当前工作目录(print working directory)
  • cd:改变当前工作目录
cd.. 返回上一级
cd   不带参数返回用户工作主目录
cd  / ... 绝对路径,否则为相对路径
  • mkdir:创建目录
-p : 会自动创建路径中不存在的目录 
例如mkdir a/b/c/d
  • rmdir:删除目录

    无法删除 . 与 .. 这两个目录

  • ls:查看文件名列表

-F : Flag,显示文件的类型
列出的是目录 名字后面加 /  bin/
列出的是可执行文件 名字后面加 *  zap*
列出的是符号链接文件 名字后面加 @  unix@
列出的是普通文件 名字后面不加  core

-l : 显示长格式列表,会显示文件属性
例如ls -l README.md
-rw-r--r-- 1 llm llm 1366 Sep 14  2020 README.txt

-h : 以便于人阅读的方式答应数值(1K 23M 2G)

-d : 当ls参数是目录时,显示目录信息而不是目录下文件信息
例如ls -ld bin
drwxr-xr-x 2 llm llm 4096 Sep 14  2020 bin

-i : 列出文件的i节点号

-s :列出文件占用的磁盘空间
  • cp:拷贝文件
cp file1 file2 : 
将file1拷贝到file2,若file2存在且为文件则覆盖,若file2不存在则创建

cp file1 file2 file3 ... dir : 将file拷贝到dir,dir要为已存在的目录名

-r : 递归复制一个目录
cp -r dir1 dir2 : 
若dir2存在,则dir1拷入dir2下 dir2/dir1/xxx
若dir1不存在,则dir1下文件拷入dir2下 dir2/xxx

-v : 冗长模式,复制目录时打印文件名

-u : 增量拷贝,类似diff,利用时间戳标识

  • mv:移动文件
利用mv可以实现文件和文件夹重命名

mv file1 file2 : 若file2不存在,则将file1重命名为file2,不过file2要和file1同级

mv file1 file2 file3 ... dir

mv dir1 dir2 : 
若dir2不存在,则将dir1改名为dir2,不过dir2必须和dir1同级 ;
若dir2存在,则将dir1移动到dir2下
  • rm:删除文件
rm file1 file2 .. file_n

-r : 递归删除实参表中的目录

-i : 删除文件前需要确认(Inform)

-f : 强制删除

常用 rm -rf xxx
  • find:目录遍历
find dir1 dir2 ...

-name wildcard : 文件名与wildcard相匹配,文件名为路径名最后一部分
例如 find -name *.[hc] 查找当前目录下所有.c / .h 文件

-regex pattern :  整个路径名与pattern正则表达式匹配

-type x : 指定查找的文件类型为x,x的取值如下
f: 普通文件
d: 目录
l: 符号连接文件
c: 字符设备文件
b: 块设备文件
P: 管道文件

-size ±n : 指定文件大小 大于 / 小于 / 等于 n 单位(默认为b)

-mtime ±ndays : 文件最近修改时间

-newer file : 文件最近修改时间要新与file
··········································································
可以利用 ( ) -o ! 来代表 与 \\ 或 \\ 非 (在shell中要加上/或 ‘‘ 防止shell解释)
例如  find ~ -size +100K -tpye f \( -name core -o -name ‘.*tmp‘ \) 
从主目录查找大于100KB的名叫core或有.tmp后缀的文件(注意\和 ‘‘的使用)
··········································································
在find后面可以跟上动作,命令与命令之间使用;分割

-print : 打印查找的文件的路径名

-exec : 对查找到的目标执行某一命令 ,使用{}来代表找到的文件路径名

-ok : 与-exec一致,只不过会在执行命令前提示确认

例如  find /lib/usr -name ‘libc*.so‘ -exec ls -lh {} \; -print \;

例如 find src -name \*.c exec grep -n -- --help {} /dev/null \;
(在src目录下所有.c文件中查找--help字符串)
··········································································
可以使用xargs命令来提高-exec执行效率(否则对于每个文件都创建进程)
xargs命令会将标准输入追加到它后面的参数列表后面
find src -name \*.c exec grep -n -- --help {} /dev/null \;
等价于
find src -name \*.c | xargs grep -n -- --help /dev/null

Linux 文件与目录相关指令

上一篇:redis与memcache的区别


下一篇:Linux之常用基础命令简介