我试图递归地在目录中找到最大的文件。如果该目录中有一个子目录,则该函数需要进入该目录并检查是否存在最大的文件。找到最大文件后,输出将显示相对路径名以及最大文件的名称和大小。
前任:
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 工具来实现这一点。任何想法都会很好!
我正在尝试修改一个脚本,以便它将转到另一个文件的输出截断到最大值(例如:1000 行)。
我已经阅读了有关 split 的内容,但我理解的是 split 默认情况下会执行 1000 并将该文件拆分为较小的文件。
但是,有时输出不会是 1000 行。它可能只有 100。
我只想将输出限制在不超过 X 量。
我正在尝试对 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)