Estoy intentando eliminar el siguiente archivo para todas las cuentas de usuario mediante un script bash, pero el comodín * no parece funcionar. He estado probando el script localmente ejecutándolo en la terminal mac os x.
Archivo plist que se eliminará: com.apple.eap.bindings.XXXXXXX.plist
#!/bin/bash
for dir in /Users/*;
do
if [[ -e "${dir}/Library/Preferences/com.apple.eap.bindings.*" ]]; then
rm "${dir}/Library/Preferences/com.apple.eap.bindings.*"
fi
done
El código anterior no elimina el archivo en cuestión, pero funciona si señalo el nombre exacto del archivo sin el comodín. También intenté eliminar las comillas pero todavía no elimino el archivo. ¿Alguien podría ayudar por favor?
Respuesta1
if [[ -e "${dir}/Library/Preferences/com.apple.eap.bindings.*" ]]; then
En esta línea pones el asterisco entre comillas dobles. Eso lo convierte en un carácter literal y no en algo que se expande mágicamente a nombres de archivo.
Enlaces:comillas-dobles-vs-asterisco-nombre-de-archivo-expansión-en-bashasí comola publicación ya señalada por Shaun.
Tendrás que utilizar el asterisco sin comillas. Ya sea como en la primera parte de tu guión o como argumento parafind
.
Respuesta2
Podrías considerar esto como una alternativa.
#!/bin/bash
/usr/bin/find /Users/*/Library/Preferences -name "com.apple.eap.bindings.*.plist" -exec /bin/rm -fv "{}" \;
Esto eliminará efectivamente los archivos en cuestión. Retire el interruptor 'v' si no desea salida.
Respuesta3
Si esto debería ayudar a alguien, esto es lo que funciona para mí:
#!/bin/bash
for dir in /Users/*;
do
if [ -z "$(echo ${dir}/Library/Preferences/com.apple.eap.bindings.*|grep -q '*')" ]; then
rm ${dir}/Library/Preferences/com.apple.eap.bindings.*
fi
done