我在网上浏览split
命令文章时,偶然发现了这个用于列出文件的 Linux 命令。它比(显示几乎相同的列表)ls -lh | tail -n +2
更好吗?ls -ltrh
有人能告诉我ls -lh
&之间的区别吗ls -lh | tail -n +2
PS:我已经检查了手册页但仍然感到困惑
答案1
tail -n +2
跳过第一行(总文件大小)。
$ ls -lh
total 79K
drwxr-xr-x 2 root root 4.0K Feb 28 15:05 bin
drwxr-xr-x 4 root root 3.0K Feb 28 15:05 boot
drwxr-xr-x 16 root root 4.3K Dec 3 06:43 dev
drwxr-xr-x 112 root root 4.0K Feb 28 15:06 etc
drwxr-xr-x 3 root root 4.0K Aug 29 2012 home
$ ls -lh | tail -n +2
drwxr-xr-x 2 root root 4.0K Feb 28 15:05 bin
drwxr-xr-x 4 root root 3.0K Feb 28 15:05 boot
drwxr-xr-x 16 root root 4.3K Dec 3 06:43 dev
drwxr-xr-x 112 root root 4.0K Feb 28 15:06 etc
drwxr-xr-x 3 root root 4.0K Aug 29 2012 home
如果有一些仅需要列表的进一步处理那就更好了。
ls -dlh *
也会做同样的事情。
答案2
ls -lh 列出所有内容。但 ls -lh|tail -n +K,跳过从第一行开始的前 n - K 行并列出所有剩余行。例如
$ 6:18:39% ls -lh ~/logs
total 264K
-rw-rw-r-- 1 vijay vijay 76K Oct 27 17:13 angular-ui-bootstrap-0.4.0.jar
-rw-rw-r-- 1 vijay vijay 70K Feb 14 16:52 cloudbash_importdata
-rwxrwxr-x 1 vijay vijay 86 Feb 14 16:38 findjar.sh
drwxr-xr-x 4 vijay vijay 4.0K Jun 26 2013 META-INF
-rw-r--r-- 1 www-data root 87K Feb 28 18:13 nginx_access.log
-rw-r--r-- 1 www-data root 12K Feb 28 18:13 nginx_error.log
-rw-rw-r-- 1 vijay vijay 310 Feb 14 20:19 onlyimport
$ 6:18:51% ls -lh ~/logs |tail -n +3
-rw-rw-r-- 1 vijay vijay 70K Feb 14 16:52 cloudbash_importdata
-rwxrwxr-x 1 vijay vijay 86 Feb 14 16:38 findjar.sh
drwxr-xr-x 4 vijay vijay 4.0K Jun 26 2013 META-INF
-rw-r--r-- 1 www-data root 87K Feb 28 18:13 nginx_access.log
-rw-r--r-- 1 www-data root 12K Feb 28 18:13 nginx_error.log
-rw-rw-r-- 1 vijay vijay 310 Feb 14 20:19 onlyimport
$ 6:19:05% ls -lh ~/logs |tail -n +4
-rwxrwxr-x 1 vijay vijay 86 Feb 14 16:38 findjar.sh
drwxr-xr-x 4 vijay vijay 4.0K Jun 26 2013 META-INF
-rw-r--r-- 1 www-data root 87K Feb 28 18:13 nginx_access.log
-rw-r--r-- 1 www-data root 12K Feb 28 18:13 nginx_error.log
-rw-rw-r-- 1 vijay vijay 310 Feb 14 20:19 onlyimport