具有不同变量的表输出

问题描述 投票: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 shell
1个回答
0
投票

[您从searchfichero等不同的输入子命令接收信息包。这意味着更好的名称是searchesficheros等。>

如果将它们分配给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.com/2010/06/bash-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.