我需要知道我可以在bash
脚本中使用哪些命令或命令来为我提供这样的目录列表(注意最后的额外行)。
total 24
drwxr-xr-x 2 dshoe users 4096 2010-10-28 18:41 backups
drwxr-xr-x 2 dshoe users 4096 2010-10-28 18:41 bin
drwxr-xr-x 2 dshoe users 4096 2010-10-28 18:41 c_source
drwxr-xr-x 2 dshoe users 4096 2010-10-28 18:41 cgi_files
drwxr-xr-x 2 dshoe users 4096 2010-10-28 18:41 cgi_scripts
drwxr-xr-x 4 dshoe users 4096 2010-10-28 18:41 ny
drwxr-xr-x 2 dshoe users 4096 2010-10-28 18:41 perl
-rw-r--r-- 1 dshoe users 1954 2010-10-28 18:41 pers
drwxrwxrwx 2 dshoe users 4096 2010-10-28 18:41 public_html
-rw-r--r-- 1 dshoe users 3392 2010-10-28 18:41 sales
-rwxr--r-- 1 dshoe users 228 2010-10-28 18:41 sargs
drwx------ 2 dshoe users 4096 2010-10-28 18:41 scripts
-rw-r--r-- 1 dshoe users 131 2010-10-28 18:41 setup
Total bytes: 17899
Total files: 4
Directories: 9
And scripts: 1
标准ls
命令无法执行此操作,因此我想知道我可以在bash
脚本中使用什么来实现此目的。
答案 0 :(得分:1)
您要使用的基本命令是ls -l
,但您需要对输出进行后期处理才能获得最后四行。
例如,这里有一个可以获得前三个项目加上第四个项目,我假设它是为所有者设置执行位的常规文件数量:
#!/usr/bin/bash
tmpfile=/tmp/tmpfile.$$
ls -l | tee ${tmpfile}
echo
echo "Total bytes:" $(awk '{sum += $5} END {print sum}' ${tmpfile})
echo "Total files:" $(grep -v '^total ' ${tmpfile} | grep -v '^d' | wc -l)
echo "Directories:" $(grep -v '^total ' ${tmpfile} | grep '^d' | wc -l)
echo "And scripts:" $(grep -v '^total ' ${tmpfile} | grep '^-..x' | wc -l)
rm -f ${tmpfile}
输出:
total 1589
-rwxr-xr-x 1 pax root 57 Oct 3 14:24 Cygwin.bat
-rw-r--r-- 1 pax root 7022 Oct 3 14:24 Cygwin.ico
drwxr-xr-x+ 1 pax root 1048576 Oct 3 14:20 bin
dr-xr-xr-x 4 pax None 0 Nov 3 17:06 cygdrive
drwxrwxr-x+ 1 pax None 0 Oct 3 14:05 dev
drwxr-xr-x+ 1 pax root 32768 Oct 3 14:20 etc
drwxrwxrwt+ 1 pax root 0 Oct 3 14:13 home
drwxr-xr-x+ 1 pax root 524288 Oct 3 14:19 lib
drwxr-xr-x+ 1 pax root 0 Oct 3 13:35 opt
dr-xr-xr-x 10 pax None 0 Nov 3 17:06 proc
drwxr-xr-x+ 1 pax root 0 Oct 3 13:59 sbin
drwxr-xr-x+ 1 pax None 0 Oct 3 14:10 srv
drwxrwxrwt+ 1 pax root 4096 Nov 3 17:06 tmp
drwxr-xr-x+ 1 pax root 4096 Oct 3 14:10 usr
drwxr-xr-x+ 1 pax root 4096 Oct 3 14:20 var
Total bytes: 1624999
Total files: 2
Directories: 13
And scripts: 1
但是,我不完全确定你是如何决定脚本的。如果它与我的假设不同,它仍然可行,你只需要弄清楚实际命令是什么(告诉我们你想要测量什么来获得值)。
答案 1 :(得分:0)
您可以尝试使用以下命令:
$ ls -l
答案 2 :(得分:0)
我想你要找的是:
ls -al