如何找到所有大于或等于当前目录平均文件大小的文件和目录?
请您参考如下方法:
这是我当前的目录(~/Pictures/
):
$ ls -la
total 24
drwx------+ 20 myusername 1951017013 680 Feb 17 23:05 .
drwxr-xr-x+ 23 myusername 1951017013 782 Feb 17 23:05 ..
-rw-r--r--@ 1 myusername 1951017013 10244 Feb 10 14:15 .DS_Store
-rw-r--r-- 1 myusername 1951017013 0 Jan 28 09:00 .localized
drwxr-xr-x 12 myusername 1951017013 408 Feb 5 10:02 02-01-2016
drwxr-xr-x 5 myusername 1951017013 170 Feb 3 12:46 02-02-2016
drwxr-xr-x 15 myusername 1951017013 510 Feb 12 18:22 02-03-2016
drwxr-xr-x 11 myusername 1951017013 374 Feb 7 17:00 02-04-2016
drwxr-xr-x 4 myusername 1951017013 136 Feb 7 17:03 02-05-2016
drwxr-xr-x 6 myusername 1951017013 204 Feb 7 22:13 02-06-2016
drwxr-xr-x 16 myusername 1951017013 544 Feb 8 13:35 02-07-2016
drwxr-xr-x 22 myusername 1951017013 748 Feb 9 13:11 02-08-2016
drwxr-xr-x 51 myusername 1951017013 1734 Feb 10 12:22 02-09-2016
drwxr-xr-x 28 myusername 1951017013 952 Feb 11 12:55 02-10-2016
drwxr-xr-x 13 myusername 1951017013 442 Feb 12 01:00 02-11-2016
drwxr-xr-x 10 myusername 1951017013 340 Feb 15 11:10 02-12-2016
drwxr-xr-x 11 myusername 1951017013 374 Feb 17 12:31 02-15-2016
drwxr-xr-x 6 myusername 1951017013 204 Feb 17 16:44 02-17-2016
drwx------ 21 myusername 1951017013 714 Jan 27 10:07 Backgrounds
drwxr-xr-x 6 myusername 1951017013 204 Feb 17 16:44 Temp
需要做的第一件事是找到第五列的平均值(在我的脚本中为
$AVG
)。我建议将
ls -la
传递到
awk
以完成此操作,并使用
awk -F
将所有内容都放在小数点后,因为所有大小均为整数(此处为整字节)。如果我刚失去你,请查看
man awk
并查找-F。请参阅以下帖子,了解如何执行以下操作:
Use awk to find average of a column
完成此操作后,您将可以通过简单的逻辑测试将输出重定向到输出。查看
man test
或
man [
(尽管发行版中可能不存在
man [
)以阅读更多可以执行的出色测试。
$ for i in $(ls -la | awk '{print$5}');
> do
> # You will have to set $AVG (Refer to above link)
> [[ $i -gt $AVG ]] &&
> ls -la | grep "$i";
> done
-rw-r--r--@ 1 myusername 1951017013 10244 Feb 10 14:15 .DS_Store
drwxr-xr-x 51 myusername 1951017013 1734 Feb 10 12:22 02-09-2016
drwxr-xr-x 28 myusername 1951017013 952 Feb 11 12:55 02-10-2016
你需要做什么:
最好的问候与计算该平均值。我会向您展示如何做到这一点,但是我觉得如果您自己做的话会更好地记住它。