Write an
awk
script to select all regular files (not directorIEs or
links) in/etc
ending with.conf
,sort the result by size from
smallest to largest,count the number of files,and print out the
number of files followed by the filenames and sizes in two columns.
Include a header row for the filenames and sizes. Paste both your
script and its output in the answer area.
我真的在努力通过使用awk来努力工作.这就是我想出来的.
ls -lrs /etc/*.conf |wc –l
将返回数字33,即目录中的.conf文件数.
ls -lrs /etc/*.conf |awk '{print "file_Size"": " " ""file_name and Size"": " }'
这将使2列具有目录中.conf文件的名称和大小.
它有效,但我不认为这是他正在寻找的.我有一个愉快的时间.
解决方法 我们在这看……select all regular files (not directorIEs or links)
到目前为止,你还没有解决这个问题,但如果你在ls -l …的输出中输入,这很容易,请选择
/^-/
因为目录以d开头,符号链接以l开头,依此类推.只有普通旧文件以 – 开头.现在
print out the number of files followed
好吧,计算比赛很容易……
BEGIN{count=0} # This is not *necessary*,but I tend to put it in for clarity/^-/ {count++;}
要获取文件名和大小,请查看ls -l的输出并计算列数
BEGIN{count=0}/^-/ { count++; SIZE=; Fname=;}
这里最大的困难是awk没有通过排序原语提供太多,所以这是困难的部分.如果你想要聪明但不是特别有效,那就可以打败(看看我在a [code-golf] solution所做的糟糕事情).容易(和unixy)做的事情是管道输出的一部分进行排序,所以…我们为每个文件收集一行到一个大字符串
BEGIN{count=0}/^-/ { count++ SIZE=; Fname=; OUTPUT=sprintf("%10d\t%s\n%s",SIZE,Fname,OUTPUT);}END{ printf("%d files\n",count); printf(" SIZE \tfilename"); # No newline here because OUTPUT has it print OUTPUT|"sort -n --key=1";}
给出类似的输出
11 files SIZE filename 673 makefile 2192 houghdata.cc 2749 houghdata.hh 6236 testhough.cc 8751 fasthough.hh 11886 fasthough.cc 19270 HoughData.png 60036 houghdata.o 104680 testhough 150292 testhough.o 168588 fasthough.o
(顺便说一句 – 这里有一个测试子目录,你会注意到它没有出现在输出中.)
总结以上是内存溢出为你收集整理的linux – 用于选择文件和打印文件大小的Awk脚本全部内容,希望文章能够帮你解决linux – 用于选择文件和打印文件大小的Awk脚本所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)