Quiero escribir un script, pero quiero una declaración if para que se ejecute solo si el número de archivos en el directorio es mayor que 1. ¿Es esto posible?
linux
bash
shell-script
jlacroix82
fuente
fuente
Respuestas:
Algo como
fuente
if [ "$(ls -b | wc -l)" -gt 1 ]; then ... your statements ...; fi
Necesitaba usar esto:
La razón por la cual ninguna de las soluciones publicadas aquí funcionó es por lo siguiente. El script está ejecutando las declaraciones EN CONTRA de los directorios, en realidad no está haciendo CD en los directorios. Al decirle con qué carpeta estoy trabajando ($ dir) obtiene la pista y funciona como se esperaba.
fuente
Usaré algo como:
Este enfoque solo contará
files
en el directorio señalado pordir
y descartará cualquier subdirectorio posible.No olvides cambiar de
dir
acuerdo a tus necesidades.fuente
[ $nf -gt 1 ]
(para una comparación numérica). Si quieres hacer eso con cadenas, debería serlo[ "$nf" != "0" -a "$nf" != "1" ]
. Además, podría (para fines de prueba) generar el valor almacenado en $ nf antes de la línea que comienza con "if".find
encontrar archivos en el directorio actual. Si quieres puedes cambiarfind .
afind <directory>
. También puede poner el comandopwd
en su script para saber cuál es su directorio actual. El script fue probado y funciona.test
forma explícita establece:INTEGER1 -gt INTEGER2: INTEGER1 is greater than INTEGER2
. Nada sobre cadenas con "-gt". Pero no discutamos, mientras funcione;)