我有两个关于Shell脚本的问题。我正在做一个简单的脚本来显示一个大于一个作为参数传递的数字的文件列表。
find $1 -size +$2c -exec ls -lh {} \;| awk '{print $9 -> $5}'
其中$1
是根,$2
是大小,$9
和$5
分别是文件的名称及其大小。
第一个问题:有没有办法在没有根的情况下显示文件的名称?我只想要文件的名称。 第二个问题:有没有办法,如果我没有指定root,那么shell脚本会采用实际的root?
答案 0 :(得分:1)
您无法告诉ls
仅打印文件的基本名称。但是,您可以使用-printf
的{{1}}操作来打印尺寸和基本名称:
find
如果您希望大小采用人类可读的格式,一种方法是仅使用find $1 -size +$2c -printf "%f -> %s\n"
找到所需的文件,然后打印每个结果的基本名称和大小:
find
编辑:
在结束时打印总计意味着在循环内构建总计:
find $1 -size +$2c | while read file; do echo $(basename "$file") "->" $(ls -lh "$file" | awk '{print $5}') ; done
答案 1 :(得分:0)
听起来像是想要basename
命令。
$ basename /foo/bar/bat/baz/whatever.txt
whatever.txt