intentando realizar algunas operaciones en todos los archivos del directorio que terminan en .c (archivos C). El código es:
#!/bin/sh
clear
for file in *
do
if [ $file="*.c" ]
then
echo $file
fi
done
exit 0
no funciona. simplemente enumera todos los archivos y directorios.
Respuesta1
La condición if
está mal formada, solo estás verificando que la cadena $file=*.c
no esté vacía. Pruebe en su lugar:
#!/bin/sh
clear
for file in *
do
if [ "$file" = "*.c" ]
then
echo "$file"
fi
done
exit 0
Por otro lado, el carácter comoding '*' en este caso no es funcional, pero se interpreta como una cadena.
Intentar:
#!/bin/sh
clear
for file in *.c
do
echo "$file"
done
exit 0
Respuesta2
Su declaración de prueba no verifica si el sufijo del archivo es .c
. Comprueba (en la mayoría de los casos) si $file
es igual a *.c
, consulte test(1)
.
Sin embargo, si reemplazó su declaración for para que diga
for file in *.c
la declaración for solo se pasará a los archivos que terminan en, .c
por lo que no tendrá que verificar más.
Respuesta3
Otra forma de una sola línea sería el uso de find
:
find . -name "*.c" | xargs echo
Depende de lo que realmente quieras hacer con esos archivos para que esto te ayude.