Si configuro el directorio actual/de trabajo (navegando hacia él usando cd
) en algún directorio en particular y luego escribo:
rm *.xvg
¿Qué hará este comando? ¿Es cierto que el comando anteriorsoloeliminar archivos con la extensión.xvg
soloen el directorio de trabajo?
Estaba nervioso por intentar esto antes de preguntar, porque quiero estar absolutamente seguro de que el comando anterior solo eliminará .xvg
archivos.UBICADO EN EL DIRECTORIO DE TRABAJO.
Respuesta1
si, rm *.xvg
lo harásoloelimine los archivos con la extensión especificada en suactualdirectorio.
AbienUna forma de asegurarse de que realmente está en el directorio donde desea eliminar sus archivos es usar el pwd
comando que mostrará su directorio actual y luego verificar ls
que encuentre los archivos que espera.
Si le preocupa un poco emitir el rm
comando, hay dos cosas que puede hacer:
escriba
ls *.xvg
para ver una lista de los archivos que se verían afectados por este comando.A menos que tengas unlotede archivos, siempre puedes usar el
-i
interruptor de línea de comando pararm
(también existe paracp
ymv
). El usorm -i *.xvg
le preguntará para cada archivo individual si está bien eliminarlo, por lo que podrá estar seguro de que no se eliminará nada que no esperaba. (Sin embargo, esto será tedioso si tienes muchos archivos :)
Respuesta2
No es necesario navegar hasta el directorio, solo use
rm /some/dir/*.xvg
En caso de que tenga un error tipográfico o similar en la ruta, donde /som/dir no existe:
cd /som/dir
rm *.xvg
eliminará accidentalmente todos los archivos .xvg en el directorio actual. El primer comando no lo hará y no es necesario volver a ejecutar el CD.
Una forma alternativa sería utilizar buscar:
find /some/dir/ -maxdepth 1 -type f -name "*.xvg" -delete
Respuesta3
Sí, rm *.xvg
solo eliminará los archivos que terminen .xvg
en su directorio actual. Este es el por qué.
Cuando escribes un comando como este, el trabajo se divide entre el shell que estás usando (supongamos bash) y el comando binario.
Puede localizar el binario escribiendo which rm
. Este pequeño programa se encarga de desvincular archivos. Programas como este se pueden iniciar desde la línea de comandos y pueden leer una lista de argumentos prog arg1 arg2 arg3
cuando se inician. En el caso de rm
, se interpretan como una lista de nombres de archivos completos que se eliminarán. Entonces, si está en un directorio que contiene el archivo foo.bar
, al escribirlo delete 'foo.*'
se obtendrá rm: foo.*: No such file or directory
. Tenga en cuenta las comillas simples alrededor del patrón del archivo, le dicen al shell que pase el argumento al shell tal como está.
Sin embargo, si escribe rm *.bar
en el mismo directorio, se eliminará el archivo. Lo que sucede aquí es que su shell, que es el programa que está utilizando para escribir comandos, está realizando algunas transformaciones antes de pasar los argumentos al comando. Uno de ellos se llama "expansión de nombre de archivo", también conocido como "globbing". Puede ver una lista de expansiones de nombres de archivos bashaquí. Una de las expansiones más comunes es *
, que se expande a nombres de archivos en el directorio actual.
Una forma sencilla de ver los globos en funcionamiento es utilizar echo
, que imprime todos los argumentos que se le pasan a través del shell. Entonces, al escribir echo *
en el mismo directorio se obtendrá el resultado foo.bar
. Entonces, cuando escribes rm *.bar
, lo que realmente sucede es que el shell expande la lista de argumentos a foo.bar
y luego la pasa al rm
comando.
Hay algunas formas de controlar el globbing. En versiones recientes de bash, por ejemplo, puede activar una opción llamada globstar que realizará una expansión recursiva. Al escribir echo **/*.bar
se mostrará una lista de todos los archivos que terminan .bar
en todas las subcarpetas. Por lo tanto, escribir rm **/*.bar
bash habilitado para globstar eliminará recursivamente todos los archivos coincidentes en las subcarpetas.
Respuesta4
Dominio :
rm ./*.pgm
funciona para mi
Dominio:
rm *.pgm
da el comando de error (en polaco, traducido):
rm: wrong option - '1'
Use "rm ./-1000.pgm" to delete the file '-1000.pgm'.
Write "rm --help" for information.
en
bash --version
GNU bash, wersja 4.4.19(1)-release (x86_64-pc-linux-gnu)