Linux:通过终端显示文件属性

393 阅读4分钟

简介

我们通常需要并想知道更多关于我们正在使用的文件和目录的信息。

大多数人都知道其中一个方法,那就是简单地想要的文件夹或文件上按右键>属性来查看其属性。不过,对于那些不熟悉终端的人来说,以下是你如何通过Linux的终端获得同样(以及更多)的信息。

_ls_命令

最常用的命令之一是ls ,它列出了你所处的所有文件和目录,以及它们的名称。

一旦你在一个你想要的文件路径上定位,你就可以通过这个命令列出所有存在的文件/文件夹。

$ ls
Folder_one  large.jpg  os.zip

或者,你也可以提供一个目录名称来列出文件,而不必移动到该目录。

$ ls Folder_one
cpfile.c  Direct  fileinfo.c

不过,这些只是名称,我们不能从中推断出什么。ls 命令有几个非强制性的选项,当它们被打开时,在列出这些文件时能给我们更多的信息。

你可以单独使用这些选项,或者结合使用其中的几个选项,这取决于你到底在寻找什么。

用_-l_选项获取细节

-l 选项将修改ls 命令,给你提供更详细的信息,如一个条目是文件还是目录,大小(通常是字节),修改日期和时间,权限,等等。

$ ls -l

这个命令的结果应该是这样的。

total 15168
drwxrwxr-x 3 marija marija     4096 Jul 18 19:26 Folder_one
-rwxrwxrwx 1 marija marija   164461 Sep 12  2017 large.jpg
-rw-rw-r-- 1 marija marija 15354276 Oct 25  2018 os.zip

这里我们可以看到,我们有一个目录_(_ drwxrwxr-x 中的_d_),名为Folder_one ,还有2个文件。我们还可以看到它们的所有者和组,marija ,和它们的大小(字节),以及它们的修改日期/时间。

权限后面的数字是指向该文件或目录的链接数。

如果你想了解更多关于权限的信息以及如何通过终端改变它们,请阅读我们的《理解chmod指南》

**注意:**你可以使用-l 标志,通过将其他标志与之结合,ls 命令会让你在这项任务中走得更远。

人类可读的_-lh_选项

如果你想要一个更适合人类阅读的形式,你可以在-l 选项之后添加加入的扩展名-lh ,或者干脆是-h

$ ls -lh
total 15M
drwxrwxr-x 3 marija marija 4,0K Jul 18 19:26 Folder_one
-rwxrwxrwx 1 marija marija 161K Sep 12  2017 large.jpg
-rw-rw-r-- 1 marija marija  15M Oct 25  2018 os.zip

现在,我们可以看到文件的大小以KB、MB、GB等为单位显示,而不是只以字节为单位显示,这可能非常有用。虽然,这主要是你从这个标志中得到的好处。

用_-la_选项显示隐藏文件

隐藏的文件以点符号(. )开头,并不意味着被大多数GUI软件或ls 命令所识别。这些通常是你_不想_看到的文件,所以这很有意义。

另一方面,如果你特别想在列出一个目录的文件时也包括隐藏的文件--你可以添加-a 标志。结合-l 标志和-a 标志,你可以将隐藏的文件与普通文件一起打印出来--包括它们的信息。

$ ls -la
total 15212
drwxr-xr-x  3 marija marija     4096 Jul 18 20:03 .
drwxr-xr-x 29 marija marija     4096 Jul 18 20:13 ..
drwxrwxr-x  3 marija marija     4096 Jul 18 19:26 Folder_one
-rwxrwxrwx  1 marija marija   164461 Sep 12  2017 large.jpg
-rw-rw-r--  1 marija marija 15354276 Oct 25  2018 os.zip
-rw-r--r--  1 marija marija    12288 Jan 29  2018 .tekst.txt.swn
-rw-r--r--  1 marija marija    12288 Jan 29  2018 .tekst.txt.swo
-rw-r--r--  1 marija marija    12288 Jan 29  2018 .tekst.txt.swp
用_-s_选项显示块大小

-s 选项以块为单位显示文件的大小,而不是普通的字节。

$ ls -s
total 15168
    4 Folder_one    164 large.jpg  15000 os.zip

**注意:**对于你的系统和硬件,块是最小的可写单位。

用_-lS_选项按大小排列文件

-S 标志,不要与前面的小写-s 混淆,是一个_排序标志_。它按照文件的大小,以降序进行排序。

$ ls -lS
total 15168
-rw-rw-r-- 1 marija marija 15354276 Oct 25  2018 os.zip
-rwxrwxrwx 1 marija marija   164461 Sep 12  2017 large.jpg
drwxrwxr-x 3 marija marija     4096 Jul 18 19:26 Folder_one
使用_-R_选项的递归列表

如果你想列出子目录,你将不得不调用一个递归的ls-R 选项使这一工作变得非常简单。

它将给你提供一个树状的所有文件或目录的表示,这些文件或目录恰好在一个特定的地方。

$ ls -R directory

Screenshot 2021-07-26 at 18.53.05.png file.txt
Screenshot 2021-07-26 at 21.15.20.png mpl

directory/dvp-articles:
axis-off

directory/dvp-articles/axis-off:
app.py     get-pip.py

directory/mpl:
mpl-chapter-2-1.png

这里,我们在directory 上递归调用了ls 。在它里面,有另一个目录--dvp-articles ,在它里面,还有另一个--axis-off 。在axis-off 内,有一个app.pyget-pip.py

当然,你也可以在这里连锁使用-l 标志,但输出结果可能会有点混乱。

$ ls -lR directory
ls -lR directory

-rw-r--r--@ 1 david  staff  369705 Jul 26 23:57 Screenshot 2021-07-26 at 23.57.34.png
-rw-r--r--@ 1 david  staff  103861 Jul 27 00:05 Screenshot 2021-07-27 at 00.05.16.png
drwxr-xr-x  3 david  staff      96 Jun 17 18:00 dvp-articles
-rw-r--r--  1 david  staff       0 Jun 25 17:11 file.txt
drwxr-xr-x  3 david  staff      96 Jul 16 20:19 mpl

directory/dvp-articles:
total 0
drwxr-xr-x@ 4 david  staff  128 Jun 17 18:03 axis-off

directory/dvp-articles/axis-off:
total 3800
-rw-r--r--  1 david  staff      463 Jun 17 18:08 app.py
-rw-r--r--  1 david  staff  1937800 Jun 17 18:03 get-pip.py

directory/mpl:
total 376
-rw-r--r--@ 1 david  staff  192506 Jul 16 20:18 mpl-chapter-2-1.png
选项_-i_

要使用 inode,我们可以添加-i 标志。

$ ls -i

688193 Folder_one  
680393 large.jpg  
680392 os.zip

当然,你可以把它与其他标志连锁起来,比如。

$ ls -li
 49323 drwx------@  3 david  staff    96 Jun 16 20:39 Applications
 34615 drwx------+ 15 david  staff   480 Jul 27 00:05 Desktop
 ...

_统计_命令

stat 命令更像是老式的右键>属性的方法,因为它将所有的数据和属性以一种非常可读的格式化。它需要一个文件路径,不像ls 那样可以自定义。

$ stat Folder_one

这就导致了。

File: 'Folder_one' 
  Size: 4096      	Blocks: 8          IO Block: 4096 directory
Device: 805h/2053d	Inode: 688193      Links: 3
Access: (0775/drwxrwxr-x)  Uid: ( 1000/  marija)   Gid: ( 1000/  marija)
Access: 2021-07-18 20:04:03.205402891 +0200
Modify: 2021-07-18 19:26:00.681976407 +0200
Change: 2021-07-18 20:03:51.617219116 +0200
 Birth: -

对于一些人来说,这是一个比ls 命令更好的解决方案。

通过stat ,你也可以通过--printf ,对打印信息进行格式化。你可以过滤掉一些数据,如所有者的用户名、所有者的组名、或最后一次状态改变的时间,甚至可以用更人性化的形式。

$ stat --printf='%U\n%G\n%z\n' Folder_one/

在这种情况下,这将导致。

marija
marija
2021-07-18 20:03:51.617219116 +0200

注意,我们在每个想要的属性后面都加上了_''n_'',所以每个属性都被打印在一个新行中。

总结

使用终端,很容易找到文件的属性,使用ls 及其任何接受的标志或通过stat

在这个简短的指南中,我们看了一下如何使用Linux显示文件属性。