Quiero eliminar cualquier archivo que parezca wordpress-891.sql
del directorio actual (no dentro de los subdirectorios).
¿Funcionará rm wordpress-*.sql
o 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 -r
marca para eliminar un directorio.
Por lo tanto, es seguro hacerlo si está seguro de querer eliminar esos archivos.
También puedes hacer rm
interactivo.
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 -d
switch with ls
para 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, rm
no 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 find
el comando. :)
Por ejemplo, si desea eliminar todos los archivos coincidentes debajo wordpress-*.sql
de test_dir
, haga lo siguiente.
cd test_dir
find . -name "wordpress-*.sql" -exec rm -f {} \;
Siempre que find
el programa realmente encuentra un archivo coincidente, intenta ejecutar un comando después de -exec
la 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 -maxdepth
la opción.
cd test_dir
find . -maxdepth 3 -name "wordpress-*.sql" -exec rm -f {} \;
Tenga en cuenta que debe especificar -maxdepth
la opción antes que otras opciones. De lo contrario, es posible que obtengas resultados que realmente no deseas ver.