我有大约 40k 行的文件,其中包含我需要从远程站点获取大小的路径(使用rsh
&du -scL
命令)。我尝试过,while read line
但由于远程连接,它在 100 多行后退出。因此,我尝试将所有行复制到一个文件中,du -scL
并将该文件输入到一个文件中rsh
,但它再次崩溃,说“命令太长”。我需要编写一个脚本,使用rsh
和计算远程站点的所有这些路径的大小du
。
#!bin/bash
for line in `cat $destbang1`
do
rsh vnc.<remotesite> du -sL $line | awk '{print $1}' >> /tmp/size1.txt
done
total=`gawk '{ sum += $1 }; END { print sum}' /tmp/size1.txt`
echo $total
答案1
您可以使用足够低的数量或参数来xargs
创建多个调用。rsh
假设远程和本地限制相同:
xargs --delimiter='\n' rsh /path/to/script.sh <lists.txt
答案2
您可以使用单个rsh
远程 shell 运行整个过程:
tr '\012' '\0' < "$destbang1" |
rsh vnc.remotesite du -sL --files0-from=- |
awk '{sum += $1} END {print sum}'
这要求您的du
命令理解该--files0-from
选项,并且文件中的任何文件名都不$deskbang1
包含嵌入的换行符。