【发布时间】:2016-01-13 06:06:22
【问题描述】:
我在提取不同大小的唯一文件时遇到困难。
问题:在一个目录中有几个文件,假设有 2 个 2 mb 的文件、4 个 4 mb 的文件和 3 个 6 mb 的文件。
现在,我们需要运行一个脚本来检查所有文件及其大小,并且只打印第一次出现的不同大小的文件。
例如。如果它读取一个文件 f1 并且它是一个 2mb 的文件,它将执行 ls -al of f1
下次如果它得到一个 2 mb 大小的文件,它将跳过它
因此在这种情况下,它将仅打印 3 个不同大小的文件,分别为 2 mb、4 mb 和 6 mb。
[sumit.gupta@abc ~]$ ll mytestfolder/
total 38972
-rw-rw-r-- 1 sumit.gupta sumit.gupta 2097152 Jan 6 23:26 f1
-rw-rw-r-- 1 sumit.gupta sumit.gupta 2097152 Jan 6 23:27 f2
-rw-rw-r-- 1 sumit.gupta sumit.gupta 4194304 Jan 6 23:28 f3
-rw-rw-r-- 1 sumit.gupta sumit.gupta 4194304 Jan 6 23:28 f4
-rw-rw-r-- 1 sumit.gupta sumit.gupta 6291456 Jan 6 23:28 f5
-rw-rw-r-- 1 sumit.gupta sumit.gupta 6291456 Jan 6 23:28 f6
-rw-rw-r-- 1 sumit.gupta sumit.gupta 4194304 Jan 13 11:11 f7
-rw-rw-r-- 1 sumit.gupta sumit.gupta 4194304 Jan 13 11:12 f8
-rw-rw-r-- 1 sumit.gupta sumit.gupta 6291456 Jan 13 11:12 f9
我正在脚本中尝试以下代码:
#!/bin/bash
source="/home/sumit.gupta/mytestfolder/"
ls -ltr /home/sumit.gupta/mytestfolder | cut -d ' ' -f 5,10 | \
head -n -1 > /tmp/abc.txt
ls -ltr /home/sumit.gupta/mytestfolder | cut -d ' ' -f5 | \
uniq > /tmp/def.txt
grep -F -vf /tmp/def.txt /tmp/abc.txt > xyz.txt
【问题讨论】:
-
请在问题中添加您的结果以及为什么它们不符合您的愿望。
-
不要parse the output of
ls它会在您不期望的时候添加问题。 -
感谢您的反馈。这是输出: [sumit.gupta@abc ~]$ sh input.sh [sumit.gupta@abc ~]$ [sumit.gupta@abc ~]$ cat xyz.txt [sumit.gupta@abc ~]$ 我是得到空白结果。感谢@pax,现在问题解决了。
-
此输出应添加到问题帖子本身,因为它是问题描述的一部分。