如何修改我的脚本以在表格中打印输出,如本屏幕截图所示?
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
[您从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.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