Eliminar archivos específicos en la línea de comando

Eliminar archivos específicos en la línea de comando

tengo archivosnombre de archivo_1,nombre de archivo_2...nombre de archivo_100000donde los nombres de los archivos se numeran secuencialmente. ¿Cómo puedo eliminar los archivos de índice mayor que, digamos?100?

Respuesta1

Si los nombres de archivos están numerados secuencialmente, simplemente ejecute el siguiente comando:

rm fileName_{100..100000}

Respuesta2

Puedes probar este comando también,

for i in $(seq 100 100000); do rm fileName_$i; done

Eliminará todos los archivos (entre 100 y 100000) si el nombre del archivo contiene números en orden secuencial.

Respuesta3

En general tienes varias formas de lograrlo:

rm fileName_{100..100000}

El shell lo expandirá a aproximadamente 100.000 nombres de archivos. Si el nombre base es una ruta larga y el número es lo suficientemente alto, es posible que con este enfoque se exceda la longitud máxima de una línea de comando.

El forlazo

for i in $(seq 100 100000); do rm fileName_$i; done

no sufre este problema, pero es una forma relativamente lenta de eliminar archivos, ya que el shell tiene que realizar la sustitución de variables y ejecutar rm unas 100.000 veces.

Ambos métodos anteriores pueden generar advertencias si, por ejemplo, filename_101faltan algunos de los archivos.

Por lo general, las soluciones basadas en findson mejores, ya que solo funcionan en archivos que realmente están allí (durante el descubrimiento). Sin embargo, existen algunas diferencias sutiles:

find . -name 'fileName_[100-100000]' -exec rm {} \;

Seguirá ejecutando el rmprograma unas 100.000 veces, mientras reemplaza el final \;por +intentará minimizar el número de subprocesos. Ambos métodos probablemente serán (mucho o un poco) más lentos que el uso, -deleteque no utiliza ningún comando externo sino que invoca llamadas al sistema.

Sin embargo,siemprecompruebe primero si el patrón realmente coincide con los archivos a los que desea dirigirse:

stefan@tuxedo ~ % mkdir askubuntu
stefan@tuxedo ~ % touch askubuntu/filename_{1..1000}
stefan@tuxedo ~ % find askubuntu -name 'filename_[100-1000]' 
askubuntu/filename_1

Entonces, en este caso, eliminaría un archivo que desea conservar y dejaría los archivos que deberían haberse eliminado.

Respuesta4

Utilice el siguiente comando:

find . -name 'fileName_[100-100000]' -exec rm {} \;

Eso eliminará archivos de 100 a 100000.

Más información:Sitio

información relacionada