在每个文件夹中,存在 . 和 .. 文件夹,这两个目录项由系统创建和删除,分别代表当前文件夹和上一级文件夹
文件与目录管理
- 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