如何查找大小大于或等于当前目录平均文件大小的所有文件和目录?
答案 0 :(得分:0)
这是我当前的目录(~/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
计算平均值时最好的问候。我会告诉你该怎么做但我觉得如果你自己做的话你会更好地记住它。
答案 1 :(得分:-4)
你可以使用
du -a
或更好
du -a | sort
此致 克劳迪奥