find . | grep -v "excluded files criteria" | xargs rm
Esto enumerará todos los archivos en el directorio actual, luego enumerará todos aquellos que no coincidan con sus criterios (tenga cuidado con los nombres de directorio coincidentes) y luego elimínelos.
Actualización : en función de su edición, si realmente desea eliminar todo del directorio actual, excepto los archivos que enumeró, se puede usar:
mkdir /tmp_backup && mv textfile.txt backup.tar.gz script.php database.sql info.txt /tmp_backup/ && rm -r && mv /tmp_backup/* . && rmdir /tmp_backup
Creará un directorio de respaldo /tmp_backup
(tiene privilegios de root, ¿verdad?), Moverá los archivos que enumeró a ese directorio, eliminará recursivamente todo en el directorio actual (sabe que está en el directorio correcto, ¿verdad?), Muévase volver al directorio actual de todo /tmp_backup
y finalmente, eliminar /tmp_backup
.
Elijo el directorio de respaldo para que esté en la raíz, porque si está tratando de eliminar todo de forma recursiva de la raíz, su sistema tendrá grandes problemas.
Seguramente hay formas más elegantes de hacer esto, pero esta es bastante sencilla.