将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