小编use*_*571的帖子

递归查找最大文件

我试图递归地在目录中找到最大的文件。如果该目录中有一个子目录,则该函数需要进入该目录并检查是否存在最大的文件。找到最大文件后,输出将显示相对路径名以及最大文件的名称和大小。

前任:

dude@shell2 (~...assignment/solutions) % bash maxfile.sh ~/test
class/asn
dude.h.gch: 9481628
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的:

#!/bin/sh
clear

recursiveS() {
    for d in *; do
        if [ -d $d ]; then
            (cd $d; echo $(pwd)/$line; du -a; recursiveS;)
        fi
    done
}
recursiveS
Run Code Online (Sandbox Code Playgroud)

我已经被困了一段时间了。我无法通过流水线化一些现有的 Unix 工具来实现这一点。任何想法都会很好!

bash shell-script recursive

44
推荐指数
3
解决办法
6万
查看次数

Unix:Bash 将输出限制为 X 行

我正在尝试修改一个脚本,以便它将转到另一个文件的输出截断到最大值(例如:1000 行)。

我已经阅读了有关 split 的内容,但我理解的是 split 默认情况下会执行 1000 并将该文件拆分为较小的文件。

但是,有时输出不会是 1000 行。它可能只有 100。

我只想将输出限制在不超过 X 量。

bash

3
推荐指数
1
解决办法
5559
查看次数

另一个未终止的 's' 命令

我正在尝试对 IPv4 地址脚本进行简单的替换。

sed "s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/192.100.100.100/g"
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的。如标题所述,我收到了一个未终止的“s”命令。

编辑:我在 Windows 上运行,通过 ssh 连接到 Unix 机器。

我原来有:

 sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/192.100.100.100/g'
Run Code Online (Sandbox Code Playgroud)

但是我将它从单引号更改为双引号,因为某些内容可能没有按预期读取,这可能导致了我的错误。我对其进行了测试,结果仍然是“未终止的‘s’命令”。

任何想法或建议都会很棒!

整个脚本

#!/bin/sed -f

#sed 's/[^@ ]*@[^@]*\.[^@ ]*\.[^@]*/account@example.com/g'

#sed 's/[^@]*\.[^@]*\.[^@]*/example.com/g'

sed "s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/192.100.100.100/g"
Run Code Online (Sandbox Code Playgroud)

示例文件输入:

sed "s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/192.100.100.100/g"
Run Code Online (Sandbox Code Playgroud)

scripting sed shell-script

1
推荐指数
1
解决办法
1971
查看次数

标签 统计

bash ×2

shell-script ×2

recursive ×1

scripting ×1

sed ×1