在Shell脚本中显示没有根的文件名

时间:2013-04-17 15:49:21

标签: shell unix

我有两个关于Shell脚本的问题。我正在做一个简单的脚本来显示一个大于一个作为参数传递的数字的文件列表。

find $1 -size +$2c -exec ls -lh {} \;| awk '{print $9 -> $5}'  

其中$1是根,$2是大小,$9$5分别是文件的名称及其大小。

第一个问题:有没有办法在没有根的情况下显示文件的名称?我只想要文件的名称。 第二个问题:有没有办法,如果我没有指定root,那么shell脚本会采用实际的root?

2 个答案:

答案 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