简介
我们通常需要并想知道更多关于我们正在使用的文件和目录的信息。
大多数人都知道其中一个方法,那就是简单地在想要的文件夹或文件上按右键>属性来查看其属性。不过,对于那些不熟悉终端的人来说,以下是你如何通过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.py 和get-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显示文件属性。