
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 for
lazo
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_101
faltan algunos de los archivos.
Por lo general, las soluciones basadas en find
son 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 rm
programa 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, -delete
que 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