¿'rm files*' elimina todas las coincidencias de todos los subdirectorios?

¿'rm files*' elimina todas las coincidencias de todos los subdirectorios?

Quiero eliminar cualquier archivo que parezca wordpress-891.sqldel directorio actual (no dentro de los subdirectorios).

¿Funcionará rm wordpress-*.sqlo también eliminará las coincidencias de los subdirectorios?

Respuesta1

No. El globbing normal *no es recursivo y tampoco lo es rm.

Si el nombre de un directorio coincide, no se eliminará; necesita la -rmarca para eliminar un directorio.

Por lo tanto, es seguro hacerlo si está seguro de querer eliminar esos archivos.

También puedes hacer rminteractivo.

rm -i wordpress-*.sql

luego pedirá confirmación antes de eliminar cada archivo

Respuesta2

Sí, funciona y elimina todos los archivos con ese esquema en el directorio actual. Y NO, no elimina archivos dentro de los subdirectorios.

Cuando no estás seguro de qué sucede cuando ejecutas un comando como:

rm wordpress-*.sql

luego simplemente ejecútelo usando ls:

ls wordpress-*.sql

Los archivos que ve en el resultado son los que se eliminarán.

Cuando intenta obtener una lista como: foo*, es mejor usar -dswitch with lspara evitar enumerar archivos dentro de un directorio llamado foobar/etc.

ls -d foo*

Este truco funciona para comandos que no se utilizan para realizar el trabajo de forma recursiva.

La otra cosa que puedes hacer es escribir la entrada que desees, por ejemplo: wordpress-*luego presiona Ctrl+ Alt+ *y ahora todas las coincidencias se escriben automáticamente delante de tu comando.

Respuesta3

No, rmno se repite a través de subdirectorios.

VerEliminar archivos coincidentes en todos los subdirectorios - SuperUserpara conocer métodos para eliminar archivos en subdirectorios.

Si alguna vez le preocupa eliminar accidentalmente algo importante, utilice gvfs-trash(que envía archivos a la papelera) en lugar de rm(que elimina archivos permanentemente).

Respuesta4

Si desea buscar y eliminar todos los archivos coincidentes, como wordpress-*.sql, puede utilizar findel comando. :)

Por ejemplo, si desea eliminar todos los archivos coincidentes debajo wordpress-*.sqlde test_dir, haga lo siguiente.

cd test_dir
find . -name "wordpress-*.sql" -exec rm -f {} \;

Siempre que findel programa realmente encuentra un archivo coincidente, intenta ejecutar un comando después de -execla opción. En este caso rm -f {}se ejecutará y {}se cambiará al nombre del archivo coincidente. P.ej

rm -f wordpress-169.sql

También puede configurar la profundidad de los subdirectorios con -maxdepthla opción.

cd test_dir
find . -maxdepth 3 -name "wordpress-*.sql" -exec rm -f {} \;

Tenga en cuenta que debe especificar -maxdepthla opción antes que otras opciones. De lo contrario, es posible que obtengas resultados que realmente no deseas ver.

información relacionada