【问题标题】:Bash / Awk. Where do i put the IF-statement?重击/Awk。我在哪里放置 IF 语句?
【发布时间】:2014-11-18 21:44:56
【问题描述】:

我需要一个带有 awk 的 bash 脚本来查找小于特定大小(即 500KB)的文件并列出这些文件,但似乎无法使用 if 语句来处理它。

以下代码输出文件,但不是所有文件,而不是大小小于所述大小的文件。

#!/bin/sh
set `date`
ls -l -R |
awk "BEGIN { m = \"$2\"; d = $3 }
\$6 == m && \$7 == d && \$8 ~ /:/ {print}"

我应该把 IF 语句放在哪里?

【问题讨论】:

    标签: bash unix if-statement awk size


    【解决方案1】:

    您可以为此使用find

    find . -type f -size -500K
    

    【讨论】:

    • 感谢您的回答。我必须使用 awk 进行此操作,即使 Find 感觉要容易得多。
    • @ssjohn 当你说 “必须” - 为什么?解析ls 的结果不是你应该做的事情。我强烈建议将方法更改为您正在做的任何事情。
    • 部分作业我无法完全掌握。 ls 不是必需的,但是使用 awk 是必需的。我一直在寻找很长一段时间,但似乎无法让它以我一直在尝试的方式工作。
    • 如果你想变得非常厚脸皮,你可以掏出...:awk 'BEGIN { system("find . -type f -size -500k") }' 从技术上讲,这使用 awk...:|
    • 终于可以使用 find 和 awk 管道了。因为它只是说 awk 必须在某个地方。所以现在“查找”找到文件并 awk 按大小对它们进行排序。谢谢您的帮助!我非常喜欢应该使用 ls 而不是 find。
    猜你喜欢
    • 2016-01-28
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多