La Red de Conocimientos Pedagógicos - Currículum vitae - Ayuda de expertos en LINUX

Ayuda de expertos en LINUX

Realmente hay muchos problemas, incluidos problemas de sintaxis y problemas de diseño

No hay "hecho" al final de esta función

panduan2()

{

comman_counter=0

para i en `0 $c`

si [ -f $i ]

entonces

mv $i "$i nuevo"

comman_counter=`expr $comman_counter 1`

return $comman_counter

else

p>

return 2

fi #Agregar un hecho a la siguiente columna

}

mv $i " $i new" #El nombre se cambiará a Un nombre de archivo con dos espacios y un signo más

Otros no usan " " para proteger variables, [ -f $i ], por ejemplo

nc10@your-5554c55be4 ~

$ i="archivo con errores"

nc10@your-5554c55be4 ~

$ ls archivo con errores\

archivo con errores

p>

nc10@your-5554c55be4 ~

$ [ -f $i ] amp echo sí

bash: [: buggy: operador binario esperado

nc10@your-5554c55be4 ~

$ [ -f "$i" ] amp;amp; echo sí

nc10@your -5554c55be4 ~

$

Mientras haya espacios en el nombre del archivo, se producirá un error para los scripts que. no son demasiado grandes ni códigos que se repiten con frecuencia,

No sé cómo hacerlo. Hay demasiadas funciones escritas, déjame escribir una para ver,

. #! /bin/sh

# usando sh tradicional, no bash, para uso portátil

="Uso: `basename $0` ruta"

ruta= $1

count=0

si [ $# -eq 0 ] || [ ! - d "$path" ]

entonces

echo "$uso" gt;amp; 2

salir 1

fi

p>

cd "$ruta" amp; están en `pwd`"

echo ""

files=`ls -l | grep '^ -' | wc -l`

directorio=` ls -l | grep '^d' | wc -l`

echo "Tenemos archivos $files y el directorio $directory aquí."

echo "Simplemente cambiamos el nombre del archivo. "

porque yo en *

hago

if [ -f "$i" ] ; entonces

nombre="$i.NEW"

mv -f "$i" "$nombre"

count=`expr $count 1`

else

continuar

fi

echo "$i se renombra a $nombre"

hecho

echo "Todo listo."

echo "se cambia el nombre de $count."

salida 0

Prueba

nc10@your-5554c55be4 ~

$ ls tmp

marksix.awk* hoja02.pdf hoja03.txt hoja05.pdf testdir2/

hoja01.pdf hoja02.txt hoja04.pdf hoja05.txt

hoja01.txt hoja03.pdf hoja04.txt testdir/

nc10@your-5554c55be4 ~

$ cat test_script

#! /bin/sh

# usando sh tradicional, no bash, para portátil

usage="Uso: `basename $0` ruta"

ruta=$1

count=0

if [ $# -eq 0 ] || [ ! -d "$ruta " ]

luego

echo "$usage" gt;amp; 2

salida 1

fi

cd "$path" amp; echo "Estamos en `pwd`"

echo ""

files=`ls -l | -l`

directorio=`ls -l | grep '^d' | wc -l`

echo "Tenemos archivos $files y el directorio $directory."

echo "Simplemente cambiamos el nombre del archivo."

for i in *

do

if [ -f "$i" ] ; entonces

nombre="$i.NEW"

mv -f "$i" "$nombre"

count=`expr $count 1`

más

continuar

fi

echo "$i pasa a llamarse $nombre"

hecho

echo "Todo listo".

echo "Se cambia el nombre de $count."

salida 0

nc10@your-5554c55be4 ~

$ chmod x test_script

nc10@your -5554c55be4 ~

$ ./test_script

Uso: ruta test_script

nc10@your-5554c55be4 ~

$ ./test_script llll

Uso: ruta test_script

nc10@your-5554c55be4 ~

$ ./test_script tmp

Estamos en /home/nc10 /tmp

Tenemos 11 archivos y 2 directorios aquí.

Simplemente cambiamos el nombre del archivo.

marksix.awk pasa a llamarse marksix.awk.NEW

hoja01.pdf pasa a llamarse hoja01.pdf.NEW

hoja01.txt pasa a llamarse hoja01.txt.NEW

hoja02.pdf pasa a llamarse hoja02. pdf.NEW

hoja02.txt pasa a llamarse hoja02.txt.NEW

hoja03.pdf pasa a llamarse hoja03.pdf.NEW

hoja03.txt es se cambia el nombre a hoja03.txt.NEW

se cambia el nombre de hoja04.pdf a hoja04.pdf.NEW

se cambia el nombre de hoja04.txt a hoja04.txt.NEW

Se cambia el nombre de hoja05.pdf a hoja05.pdf.NEW

se cambia el nombre de hoja05.txt a hoja05.txt.NEW

Todo listo.

Se cambia el nombre de 11.

nc10@your-5554c55be4 ~

$ ls tmp

marksix.awk.NUEVA* hoja02.pdf.NUEVA hoja03.txt.NUEVA hoja05.pdf. NUEVO testdir2/

hoja01.pdf.NUEVA hoja02.txt.NUEVA hoja04.pdf.NUEVA hoja05.txt.NUEVA

hoja01.txt.NUEVA hoja03.pdf.NUEVA hoja04.txt .NUEVO testdir/

nc10@y

our-5554c55be4 ~

$

El código es confuso, jaja, puedes usar sh -x script_name para ver cómo funciona