linux 指定文件的大小 linux删除指定文件
大家好,今天小编来为大家解答以下的问题,关于linux 指定文件的大小,linux删除指定文件这个很多人还不知道,现在让我们一起来看看吧!
linux查看文件大小linux用stat查看指定文件
获取到任何文件或文件系统的所有信息,仅需要一条 Linux命令。
在 GNUcoreutils软件包中包含stat命令,它提供了关于文件和文件系统包括文件大小、节点位置、访问权限和 SELinux上下文,以及创建和修改时间等各种元数据。通常情况下,你需要多个不同命令获取的信息,而这一个命令就可以实现。
在 Linux上安装 stat命令
在 Linux系统中,可能已经预装了stat命令,因为它属于核心功能软件包,通常默认包含在 Linux发行版里。
如果系统中没有安装stat命令,你可以使用包管理器安装coreutils软件包。
另外,你可以通过源码编译安装 coreutils包。
获取文件状态
运行stat命令可以获取指定文件或目录易读的状态信息。
$ stat planets.xml File: planets.xml Size: 325 Blocks: 8 IO Block: 4096 regular fileDevice: fd03h/64771d Inode: 140217 Links: 1Access:(0664/-rw-rw-r--) Uid:(1000/tux) Gid:(100/users)Context: unconfined_ubject_r:user_home_t:s0 Access: 2021-08-17 18:26:57.281330711 1200 Modify: 2021-08-17 18:26:58.738332799 1200 Change: 2021-08-17 18:26:58.738332799 1200 Birth: 2021-08-17 18:26:57.281330711 1200输出的信息易懂,但是包含了很多的信息,这里是stat所包含的项:
File:文件名Size:文件大小,以字节表示Blocks:在硬盘驱动器上为文件保留的数据块的数量IO Block:文件系统块大小regular file:文件类型(普通文件、目录、文件系统)Device:文件所在的设备Inode:文件所在的 Inode号Links:文件的链接数Access、UID、GID:文件权限、用户和组的所有者Context:SELinux上下文Access、Modify、Change、Birth:文件被访问、修改、更改状态以及创建时的时间戳精简输出
对于精通输出或者想要使用其它工具(例如:awk)解析输出的人,这里可以使用--terse(短参数为-t)参数,实现没有标题或换行符的格式化输出。
$ stat--terse planets.xmlplanets.xml 325 8 81b4 100977 100 fd03 140217 1 0 0 1629181617 1629181618 1629181618 1629181617 4096 unconfined_ubject_r:user_home_t:s0自定义格式你可以使用--printf参数以及与printf类似的语法定义自己的输出格式。stat的每一个属性都有一个格式序列(%C表示 SELinux上下文,%n表示文件名等等),所以,你可以定义输出格式。
$ stat--printf="%n\n%C\n" planets.xmlplanets.xmlunconfined_ubject_r:user_home_t:s0$$ stat--printf="Name:%n\nModified:%y\n" planets.xml Name: planets.xml Modified: 2021-08-17 18:26:58.738332799 1200下面是一些常见的格式序列:
%a访问权限%F文件类型%n文件名%U用户名%u用户 ID%g组 ID%w创建时间%y修改时间
在stat手册和coreutils信息页中都有完整的格式化序列列表。
文件信息
如果你曾尝试解析过ls-l的输出,那么,你会很喜欢stat命令的灵活性。你并不是每次都需要stat提供的所有信息,但是,当你需要其中一些或全部的时候它是非常有用的。不管你是读取默认输出,还是你自己创建的查询输出,stat命令都可以查看所需的数据。
linux下怎么查看文件夹中各个文件的大小
查看文件夹中各类文件大小的命令:
du [-abcDhHklmsSx] [-L<符号连接>][-X<文件>][--block-size][--exclude=<目录或文件>] [--max-depth=<目录层数>][--help][--version][目录或文件]
常用的参数列出:
-a或-all为每个指定文件显示磁盘使用情况,或者为目录中每个文件显示各自磁盘使用情况。-
b或-bytes显示目录或文件大小时,以byte为单位。
-c或–total除了显示目录或文件的大小外,同时也显示所有目录或文件的总和。
-D或–dereference-args显示指定符号连接的源文件大小。
-h或–human-readable以K,M,G为单位,提高信息的可读性。
-H或–si与-h参数相同,但是K,M,G是以1000为换算单位,而不是以1024为换算单位。
-k或–kilobytes以1024 bytes为单位。
-l或–count-links重复计算硬件连接的文件。
-L<符号连接>或–dereference<符号连接>显示选项中所指定符号连接的源文件大小。
-m或–megabytes以1MB为单位。
-s或–summarize仅显示总计,即当前目录的大小。
-S或–separate-dirs显示每个目录的大小时,并不含其子目录的大小。
-x或–one-file-xystem以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-X<文件>或–exclude-from=<文件>在<文件>指定目录或文件。
–exclude=<目录或文件>略过指定的目录或文件。
–max-depth=<目录层数>超过指定层数的目录后,予以忽略。
–help显示帮助。
–version显示版本信息。
Linux下查看指定文件夹和文件的大小
df命令:查看目前所有文件系统的可用空间及使用情况
df可以查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件却无能为力
复制代码代码如下:
df-lh
参数-h表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB、MB等易读的格式。
上面的命令输出的第一个字段(Filesystem)及最后一个字段(Mounted on)分别是档案系统及其挂入点。我们可以看到/dev/sda1这个分割区被挂在根目录下。
接下来的四个字段 Size、Used、Avail、及 Use%分别是该分割区的容量、已使用的大小、剩下的大小、及使用的百分比
du命令:查询文件或文件夹的磁盘使用空间
如果当前目录下文件和文件夹很多,使用不带参数du的命令,可以循环列出所有文件和文件夹所使用的空间。这对查看究竟是那个地方过大是不利的,所以得指定深入目录的层数,参数:–max-depth=,这是个极为有用的参数!如下,注意使用“*”,可以得到文件的使用空间大小。
复制代码代码如下:
[root@bsso yayu]# du-h–max-depth=1 work/testing
27M work/testing/logs
35M work/testing
[root@bsso yayu]# du-h–max-depth=1 work/testing/*
8.0K work/testing/func.php
27M work/testing/logs
8.1M work/testing/nohup.out
8.0K work/testing/testing_c.php
12K work/testing/testing_func_reg.php
8.0K work/testing/testing_get.php
8.0K work/testing/testing_g.php
8.0K work/testing/var.php
[root@bsso yayu]# du-h–max-depth=1 work/testing/logs/
27M work/testing/logs/
[root@bsso yayu]# du-h–max-depth=1 work/testing/logs/*
24K work/testing/logs/errdate.log_show.log
8.0K work/testing/logs/pertime_show.log
27M work/testing/logs/show.log
查看linux文件目录的大小和文件夹包含的文件数
复制代码代码如下:
du-sh xmldb/统计总数大小
du-sm*| sort-n//统计当前目录大小并安大小排序
du-sk*| sort-n
du-sk*| grep guojf//看一个人的大小
du-m| cut-d“/”-f 2//看第二个/字符前的文字
查看此文件夹有多少文件/*/*/*有多少文件
复制代码代码如下:
du xmldb/
du xmldb/*/*/*|wc-l
du与df的区别
du统计文件大小相加
df统计数据块使用情况
如果有一个进程在打开一个大文件的时候,这个大文件直接被rm或者mv掉,则du会更新统计数值,df不会更新统计数值,还是认为空间没有释放。直到这个打开大文件的进程被Kill掉。
如此一来在定期删除/var/spool/clientmqueue下面的文件时,如果没有杀掉其进程,那么空间一直没有释放。
使用下面的命令杀掉进程之后,系统恢复。
fuser-u/var/spool/clientmqueue
ls命令:以K、M、G为单位查看文件大小
复制代码代码如下:
ls
ls-l
ls-lh
ll-h