按新行拆分 du 命令的结果
Split results of du command by new line
我得到了前 20 个 files/folders 占用我硬盘空间最多的列表。我想把它们分成size path/to/file
。以下是我到目前为止所做的。
我正在使用:var=$(du -a -g /folder/ | sort -n -r | head -n 20)
。它 returns 以下内容:
120 /path/to/file
115 /path/to/another/file
110 /file/path/
等等
我已尝试使用以下代码将其拆分为单行。
for i in $(echo $var | sed "s/\n/ /g")
do
echo "$i"
done
我想要的结果如下:
120 /path/to/file,
115 /path/to/another/file,
110 /file/path/,
等等
然而这是我得到的结果:
120,
/path/to/file,
115,
/path/to/another/file,
110,
/file/path/,
等等
我觉得awk
会更简单,可以结合管道到原来的命令:
du -a -g /folder/ | sort -n -r | head -n 20 | awk '{ print , "," }'
如果不能创建单个管道,就得用$var
echo "$var" | awk '{ print , "," }'
我得到了前 20 个 files/folders 占用我硬盘空间最多的列表。我想把它们分成size path/to/file
。以下是我到目前为止所做的。
我正在使用:var=$(du -a -g /folder/ | sort -n -r | head -n 20)
。它 returns 以下内容:
120 /path/to/file
115 /path/to/another/file
110 /file/path/
等等
我已尝试使用以下代码将其拆分为单行。
for i in $(echo $var | sed "s/\n/ /g")
do
echo "$i"
done
我想要的结果如下:
120 /path/to/file,
115 /path/to/another/file,
110 /file/path/,
等等
然而这是我得到的结果:
120,
/path/to/file,
115,
/path/to/another/file,
110,
/file/path/,
等等
我觉得awk
会更简单,可以结合管道到原来的命令:
du -a -g /folder/ | sort -n -r | head -n 20 | awk '{ print , "," }'
如果不能创建单个管道,就得用$var
echo "$var" | awk '{ print , "," }'