这是我的循环包含的内容:
cat /$f/stat | awk '{print $1,$3,$4,$7,$17}' /$f/stat
cd $f
sudo ls fd | wc -l
cd ..
首先,它显示以下内容的输出:
cat /$f/stat | awk '{print $1,$3,$4,$7,$17}' /$f/stat
它在新行上打印输出:
cd $f
sudo ls fd | wc -l
cd ..
如何合并这些内容,以便将它们显示在一行上?
答案 0 :(得分:0)
首先,使用shellcheck验证脚本。
好像您希望awk
的输出和wc -l
的输出在同一行上。为此,请使用命令替换:
printf '%s %s\n' "$(awk '{print $1,$3,$4,$7,$17}' "$f/stat")" "$(sudo ls "$f/fd" | wc -l)"
cat | awk
-awk
从作为参数传递的文件中读取输入;另外,看起来您需要"$f/stat"
而不是"/$f/stat"
$f/fd
,而不必执行cd $f
并返回由于解析ls
的输出被认为是bad practice,因此可以在Linux上执行以下操作:
printf '%s %s\n' "$(awk '{print $1,$3,$4,$7,$17}' "$f/stat")" "$(sudo find "$f/fd" -maxdepth 1 -print0 | tr -cd '\0' | wc -c)"
find ... -print0
显示NUL终止的文件列表tr -cd '\0'
-删除除NUL以外的所有字符wc -c
-计算NUL的数量,即find
输出中文件名的数量