目录
du
du命令是对文件和目录磁盘使用的空间的查看.
语法:
du [-ahskm] 文件或目录名称
选项与参数:
-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;
du -sh * 生产环境常这样搭配使用统计当前目录下所以我将的大小显示出来,常用于磁盘水位过高的情况。
创建空文件touch
touch +选项 +参数
touch用法
创建两个文件夹,aa,bb
软链接硬链接ln
ln命令用于为文件或目录建立链接文件,提高用户定位文件或定位目录的效率,链接文件包括软链接和硬链接两种类型,其中软链接又称为符合链接,无论是访问软链接还是硬链接,与直接访问原始文件的效果基本相同
ln -s 创建软链接,相当于创建一个快捷方式
ln 创建硬链接,相当于复制了一份副本
软链接建立时原始文件可以不存在
如果删除源文件之后又重新建立源文件,那么软链接照样可以用
软链接文件的大小就是软链接文件本身的文件名字符长度!
可以给目录做软链接,为了防止目录被删
硬软区别
硬链接不能跨分区建立连接 无法对文件夹创建
删除硬件连接可以继续访问硬链接
软连接可以跨设备 可以支持文件夹
软连接删除源文件不能访问
硬链接:
一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)
软链接:
除了硬链接以外,还有一种特殊情况。文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的"软链接"(soft link)或者"符号链接(symbolic link)。这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:"No such file or directory"。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因此发生变化。
小节:
1、软链接和硬链接指向方向不一样 软(指向源文件,不需要占用磁盘空间) 硬(指向数据块,需单独占用空间)
2、读取方式 软(指向源文件) 硬(指向数据块)
3、创建对象 软(可以指向目录和文件) 硬 (不能指向目录)
4、 软链接可跨区域 硬链接不行
inode值:是文件的一个位置标识(唯一性)用于系统 用于给系统识别定位
复制文件或者目录cp
拷贝文件:cp
cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令。
常用选项说明:
cp常用选项
-f:强制复制,不与用户交互
-i:提醒覆盖
-p:连属性一起复制
-r:复制目录时必须使用此选项,表示递归复制所有文件及子目录。
-a:保留权限,复制软链接本身,递归复制
注:复制多个文件或目录时,目标位置必须是目录,且目标目录必须已存在。
cp的高级用法:cp -v file1.txt{,.bak}常用于备份
删除文件或者目录rm
-i:删除文件或目录时提醒用户确认
-r:删除目录时必须使用此选项,表示递归删除整个目录树(应谨慎使用)。
-f:删除文件或目录时不进行提醒,而直接强制删除
常见用法:rm -rf /*
删除空目录:rmdir
剪切文件粘贴或目录/改名mv
用法“mv+文件名+目录名
mv命令用来移动文件或目录,也可以给文件或目录重命名。
常用选项说明:
选项 | 含义 |
-f | 禁止交互式操作,如有覆盖也不会给出提示 |
-i | 确认交互方式操作,如果mv操作将导致对已存在的目标文件的覆盖,系统会询问是否重写,要求用户回答以避免误覆盖文件 |
-v | 显示移动进度 |
查找命令/文件存放目录which
which 命令用于查找 Linux 命令程序并显示所在的具体位置,其搜索范围主要由用户的环境变量 PATH 决定(可以执行“echo $PATH”命令查看),这个范围也是 Linux 操作系统在执行命令或程序时的默认搜索路径。
查找文件或者目录find
采用递归方式2,根据目标的名称、类型、大小等不同属性进行精细查找
不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示
-name 按名称查找:
-size 按大小查找:
-user 按文件属主:
-type 按类型查找:普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)、链接(l)
块设备指的是成块读取数据的设备(如硬盘、内存等),而字符设备指的是按单个字符读取数据的设备(如键盘、鼠标等)
-mtime +30按时间查找
find -name参数案例
find /etc -name "resol*.conf"
find /data/ -name "*.txt" #查找/data/目录以.txt结尾的文件;
find /data/ -name "[A-Z]*" #查找/data/目录以大写字母开头的文件;
find /data/ -name "test*" #查找/data/目录以test开头的文件;
find工具 -size参数案例
find /data/ -size +1M #查文件大小大于1Mb的文件;
find /data/ -size 4M #查文件大小为10M的文件;
find /data/ -size -1M #查文件大小小于1Mb的文件;
-size +4M 表示4M 以上 不包括 4M
-size 4M 表示3M 到4M 且不包括3M
-size -4M 表示3M 以内 包括3M
1G 1024 代表1023M - 1024M 不包括1023M
find工具 -type参数案例
find /boot -type d
find /data/ -type d #查找/data/目录下的文件夹;
find /data/ ! -type d #查找/data/目录下的非文件夹;
find /data/ -type l #查找/data/目录下的链接文件。
find /data/ -type d|xargs chmod 755 -R #查目录类型并将权限设置为755;
find /data/ -type f|xargs chmod 644 -R #查文件类型并将权限设置为644;
查找存在的用户文件
find /home -user 用户名
find /home -user 用户名 -group 组名
find通配符使用
设置 find 命令的查找条件时,若需要使用“*”或“?”通配符,最好将文件名用双引号括起 来,以避免当前目录下符合条件的文件干扰查找结果
find /boot -size +1024k -a/-o -name "vmlinuz*"
使用“-a”“-o”组合两个条件,前者表示两个条件必须同时满足, 后者表示只需满足其中任何一个条件即可
管道 |
管道:一个命令的输出可以通过管道做为另一个命令的输入。
“ | ”的左右分为两端,从左端写入到右端。
扩展
xargs
可以和管道配合
find ./ -maxdepth 1 -type f -print0 | xargs -0 ls -lh
-atime -- 访问时间
Linux中日志放在/var/log sylog
-mtime -- 文件内容修改时间
-ctime -- 文件属性修改时间
ctime ##以天为单位
cmin ##以分钟为单位
find ./ -name "syslog.*.gz" -mtime -5 -exec ls -lh {} \; # +5是五天以前 #-5天以内
在当前目录下(包含子目录),删除所有txt文件
find ./ -name "*.txt" -exec rm {} \;
在当前目录下(包含子目录),查找所有txt文件并找出含有字符串"bin"的行
find ./ -name "*.txt" -exec grep "bin" {} \;
多条件查找
-a:并且
-o:或者
[root@localhost ~]# find /mnt -user root -a -size +5m
[root@localhost ~]# find /mnt -user root -o -size +5m
-not表示非;即反向选择
[root@localhost ~]# find /mnt -not -user root
按权限查找:-perm
[root@localhost ~]# find /bin/ -perm 755 # 等于 0755 权限的文件或目录
[root@localhost ~]# find /bin/ -perm -644 #-perm -644 至少有 644 权限的文件或目录
生产案例
find /backup/ -type f -name "*.log" -exec rm {} \; #删除日志文件
find /backup/ -type f -name "*.dmp" -exec rm {} \;
#删除备份文件
find /backup/ -type f -name "*.tar.gz" -mtime +5 -exec rm -rf {} \; #删除5天前的备份(注意:{} \中间有空格)
找到/opt目录下,以.log为结尾的文件(多个),批量备份(cp)到/mnt下
find /opt/ -name "*.log" | xargs -i cp {} /mnt/
找到opt/目录下,以大写字母为开头且创建时间在十分钟之内的目录,进行批量备份到/mnt下
find /opt/ -type -d -name "[A-Z]" -cmin -10 | xargs -i cp -R {} /mnt/