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
diff
llamada 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 -C
Respuestas:
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.txt
yfull.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 -u
fuente
[[ -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 parals
usar el formato largo (como yo) y el shell ya se expandirá*.txt
por sí solo. Solo hazlo en sufor file in *.txt
lugar.find
así:for file in $(find . -name '*.txt'); do if [[ ! -s $file ]]; then echo $file; fi; done
for file in $(ls *.txt); do
. Por favor, usefor file in *.txt; do
en 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
-s
no 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__.py
archivos 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