有不同变量的表格输出

问题描述 投票:0回答:1

我怎样才能修改我的脚本,使其以表格形式打印输出,就像这张截图一样?

Desired output

ruta=$1
nom=$2
size=$3
mod=$4
search="$(find "$ruta" -iname "*$nom*" -size $size -mtime $mod)"
fichero="$(ls -lh $search | awk 'BEGIN{FS="/"; OFS="\t"}{print$NF}')"
mida="$(ls -lh $search | awk '{print$5}')"
modificado="$(ls -l --full-time $search | awk '{print$6}')"
path="$(ls -d $search | awk 'BEGIN{FS="/"; OFS="/"} {$NF=""; print$0,$NF}')"
#echo $search
echo -e "\e[31mNOMBRE DEL FICHERO\n\e[0m$fichero" 
echo
echo -e "\e[31mTAMAÑO\n\e[0m$mida" 
echo
echo -e "$modificado"
echo
echo -e "$path"
echo
linux bash scripting output
1个回答
0
投票

你可以从不同的输入子命令中接收信息包,如 search, fichero 等。这意味着更好的名字是 searches, ficheros 等。

如果你把这些分配给bash数组,你可以在之后像这样循环。

# read shell command into array ()
result=($(find /var/log -type f))

# show found number of elements
echo "Elements found: ${#result[@]}"

# loop elements by counter
for ((i=0; i<${#result[@]}; i++))
do
  echo ${result[$i]}
done

echo "-----"

# print all content
echo ${result[@]}

关于使用bash数组的有趣文章: https:/www.thegeekstuff.com201006bash-array-tutorial

ruta=$1
nom=$2
size=$3
mod=$4

search=($(find "$ruta" -not -type d -iname "*$nom*" -size $size -mtime $mod))

echo -e "FICHERO\tTAMANO\tMODIFICATION\tRUTA"

for ((i=0; i<${#search[@]}; i++))
do
  fichero=$(basename ${search[$i]})
  mida=$(stat -f "%z" ${search[$i]})
  modificado=$(stat -t "%Y-%m-%d" -f "%Sm" ${search[$i]})
  path=$(dirname ${search[$i]})

  echo -e "$fichero\c"
  echo -e "\t$mida\c"
  echo -e "\t$modificado\c"
  echo -e "\t$path\c"
  echo
done

还有一个简化的变体,有printf输出,还有一个无数组的for循环。

ruta=$1
nom=$2
size=$3
mod=$4

search=$(find "$ruta" -not -type d -iname "*$nom*" -size $size -mtime $mod 2>/dev/null)

printf "%s %38s  %12s  %s\n" "FICHERO" "TAMANO" "MODIFICATION" "RUTA"
printf "%s\n" "--------------------------------------------------------------------"

for file in ${search}
do
  fichero=$(basename $file)
  mida=$(stat -f "%z" $file)
  modificado=$(stat -t "%Y-%m-%d" -f "%Sm" $file)
  path=$(dirname $file)

  printf "%35s %10s  %12s  %s\n" $fichero $mida $modificado $path
done
© www.soinside.com 2019 - 2024. All rights reserved.