Comprobar si un archivo o carpeta existe o no (y más) con ciclo IF
Hace rato no pongo nada de Bash, y es que al estar adentrándome en el maravilloso mundo de Python he olvidado un poco a este otro amigo que tanto me ayudó
Aquí les pongo algo a los entusiastas de Bash, como bien dice el título… les mostraré cómo comprobar si existe o no un archivo o carpeta en el sistema, solo usando: if
Vamos a crear un archivo .sh y darle permisos de ejecución, para ello basta con poner el siguiente comando en una terminal:
touch prueba.sh && chmod +x prueba.sh
Esto lo que hizo es crear el archivo (touch prueba.sh) y además darle permisos de ejecución (chmod +x prueba.sh)
Luego escribamos lo siguiente en él:
if [ -d /opt/ ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi
¿Qué hace esto?
Simple
En la primera línea -» if [ -d /opt/ ];
Aquí preguntamos, ¿existe el directorio /opt/? Sí directorio/carpeta, pues el -d significa directorio o carpeta.
Luego en caso de que exista imprimiremos en la terminal “Sí, sí existe.” (esto es la línea 2 y 3)
En caso contrario y NO exista /opt/, entonces imprimiremos “No, no existe” (línea 4 y 5)
Luego en la última línea (la número 6) cerramos el if y listo.
Hagan la prueba, les mostrará que /opt/ sí existe.
Si desean que les muestre el otro texto (el de que no existe) cambien /opt/ por cualquier otra carpeta que no exista en su sistema, por ejemplo: /asd/
Como ven, -d nos sirve para saber si el directorio existe, bien ahora si cambiamos -d por -f es para comprobar existencia de archivos (-d = directorio, -f = file/archivo)
Por ejemplo:
if [ -f /etc/hosts ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi
Aquí el listado de las opciones:
-d -» Comprobar si existe determinado directorio
-f -» Comprobar si existe determinado archivo
-w -» Comprobar si determinado archivo tiene permisos de escritura
-x -» Comprobar si determinado archivo tiene permisos de ejecución.
Y bueno no hay mucho más que agregar
Sé que esto le será muy útil e interesante para aquellos que gustan de programar en Bash
Saludos
Otra forma de hacerlo sin if…then..else :
test -f /etc/hosts && elcomandoO también
test ! -f /etc/hosts && echo "no se encontró el archivo"Etcétera.
Cierto
… O_O … Eres Hugo, Hugo de Cuba? … Usando Windows8, WTF!!!
Pues si, me estoy familiarizando con este OS y si he de serte franco, lo único que le he encontrado útil es el gestor de copias, por lo demás personalmente me parece una plasta, especialmente su interfaz híbrida y las aplicaciones de metro. Me gusta menos que el Vista y el 7 (aunque sea un poco mas eficiente que estos), que tampoco me gustaban. Para lo único que lo estoy usando es para jugar NFS13 y Skyrim, pero este OS se lleva tanto espacio que tuve que eliminar mi partición de Linux [snif].
No obstante, para tu tranquilidad, te comento que anteayer descargué el ISO de Arch de enero y pienso darle una probadita en su versión x86-64, en cuanto consiga el repo (de casualidad lo tendrás?). Ahora que segun vi usa por defecto paquetes firmados, me da mayor confianza zambullirme.
Y además mi padre me dijo que me mandaría un Sony Xperia, que quiero aprovechar para aprender algo de programación para Android, que era un deseo pendiente. Así que tranquilízate, aun no me he pasado al lado oscuro de la fuerza, buahahahaha
man test
Claro.
Wenas!..
Podríamos hacer uno igual.. ..pero que el directorio sea pasado por parámetro..
if [ -d $1 ];then
echo "Sí, sí existe."
else
echo "No, no existe"
fi
Y lo llamamos como:
./prueba.sh /opt/
Saludo..
IF no es un ciclo xD
Me viene como anillo al dedo para un script que estoy haciendo. ¿Es válido usar comodines? Por ejemplo, para saber si existe algún .mp4 entonces ejecutar algo sobre ellos.
if [ -f *.mp4 ];
…
Sí, es totalmente válido..
Incluso a través de parámetros.. “*.mp4″
Por ejemplo,
if [ -f $1 ];
then
rm -r $1
else
ls
fi
Si lo llamas: ./prueba.sh *.mp4
Si encuentra archivos .mp4 los borra.. ..sino te lista los archivos de ese directorio..
¡Gracias por el feedback y tips!
Te faltó la f xD
rm -rf $1
Así es más emocionante!
Maravilloso!!!, Cada día me enamoro más de Linux, Windows ha quedado relegado en algún rincón oscuro de mi Disco Duro, al cual esta a punto de ser borrado para dar paso a la luz de Linux.
Excelente!.. ..entonces haz el siguiente paso..y sácalo..
Hace 6 meses aprox. que tengo en todas mis máquinas sólo GNU/Linux y no necesito de más.. ..ni de W$..ni Wine.. ..y soy más que feliz así..
Y voy contagiando a mis alrededores..ya que todos me ven con mi Arch, rápido, eficiente y feliz.. ..y me piden que les instale Linux.. ..yeah!..
@KZ, contá más sobre esto: “y es que al estar adentrándome en el maravilloso mundo de Python”!
JAJAJAJA nah… poco a poco
Aún soy solo un novato en Python, casi no tengo tiempo ya para dedicarle horas y horas, por lo que voy lento sí, lento pero seguro en mi aprendizaje
Muchísimas gracias
justo ayer andaba pensando como hacer esto.
esto con ncurses es genial
en 1 palabra… ¡EXCELENTE!
Hace mucho que estaba perfeccionando un script para realizar descargas desde Internet, pero me encontraba con el problema de que descargaba los archivos que le pedía 1 y otra vez sin poder comprobar la existencia 1ro.
Muy buen tuto.