Tengo un archivo llamado diff.txt. Quiere verificar si está vacío. Hice algo como esto pero no pude hacerlo funcionar.
if [ -s diff.txt ]
then
touch empty.txt
rm full.txt
else
touch full.txt
rm emtpy.txt
fi
Tengo un archivo llamado diff.txt. Quiere verificar si está vacío. Hice algo como esto pero no pude hacerlo funcionar.
if [ -s diff.txt ]
then
touch empty.txt
rm full.txt
else
touch full.txt
rm emtpy.txt
fi
diffllamada real , simplemente verifique el valor de retorno:if diff foo.txt bar.txt; then echo 'No difference'if [ ! -s diff.txt ]; then echo "IS EMPTY";else echo "HAS SOMETHING";fi$ cat diff.txt | hexdump -CRespuestas:
Los errores ortográficos son irritantes, ¿no? Revisa tu ortografía
empty, pero luego prueba esto:Me gustan mucho los scripts de shell, pero una desventaja es que el shell no puede ayudarte cuando escribes mal, mientras que un compilador como tu compilador de C ++ puede ayudarte.
Observe, por cierto, que he cambiado los roles de
empty.txtyfull.txt, como sugiere @Matthias.fuente
empty=empty.txt; full=full.txt; diff=diff.txt; if [ -s ${diff?} ]; then r=${empty?} t=${full?}; else r=${full?} t=${empty?}; fi; rm ${r?}; touch ${t?}set -ufuente
[[ -s file.name ]] || { [[ -f file.name ]] && echo 'empty' || echo 'does not exist'; }[[-s archivo]] -> Comprueba si el archivo tiene un tamaño mayor que 0
Si es necesario, esto verifica todos los archivos * .txt en el directorio actual; e informa todo el archivo vacío:
fuente
$(ls *.txt, y de hecho no debería. Algunas personas tienen valores predeterminados establecidos paralsusar el formato largo (como yo) y el shell ya se expandirá*.txtpor sí solo. Solo hazlo en sufor file in *.txtlugar.findasí:for file in $(find . -name '*.txt'); do if [[ ! -s $file ]]; then echo $file; fi; donefor file in $(ls *.txt); do. Por favor, usefor file in *.txt; doen su lugar; por favor lea esta página de Bash Pitfalls ; y por favor deja de difundir antipatrones como este.Si bien las otras respuestas son correctas, el uso de la
"-s"opción también mostrará que el archivo está vacío, incluso si el archivo no existe.Al agregar esta verificación adicional
"-f"para ver si el archivo existe primero, nos aseguramos de que el resultado sea correcto.fuente
La respuesta de @geedoubleya es mi favorita.
Sin embargo, prefiero esto
fuente
Para verificar si el archivo está vacío o solo tiene espacios en blanco , puede usar grep:
fuente
-sno responde la pregunta. Busca un archivo que existe y tiene un tamaño de más de 0 bytes.Muchas de las respuestas son correctas, pero creo que podrían ser más completas / simplistas, etc., por ejemplo:
Ejemplo 1: instrucción if básica
si $ read_file está vacío o no, detiene el show con exit. Más de una vez he leído mal la respuesta principal aquí para significar lo contrario.
Ejemplo 2: como una función
fuente
fuente
Vine aquí buscando cómo eliminar
__init__.pyarchivos vacíos , ya que están implícitos en Python 3.3+ y terminé usando:También (al menos en zsh) usando $ path como la variable también rompe su env $ PATH y, por lo tanto, romperá su shell abierto. De todos modos, pensé en compartir!
fuente
La forma más fácil de verificar que el archivo esté vacío o no:
También puedes escribirlo en una sola línea:
fuente