Respuestas:
Si los nombres de archivo están numerados secuencialmente, simplemente ejecute el siguiente comando:
rm fileName_{100..100000}
execllamada impone un límite al número de argumentos que puede tener un proceso. Puedes recuperarlo con getconf ARG_MAX. Por ejemplo, en mi sistema es 2097152(~ 2.1 millones). Esto significa que rm(que no está integrado) fallará con más de esa cantidad de archivos. Los comandos integrados no tienen este problema, y tampoco las otras soluciones propuestas.
Puedes probar este comando también,
for i in $(seq 100 100000); do rm fileName_$i; done
Eliminará todos los archivos (rangos de 100 a 100000) si el nombre del archivo contiene números en orden secuencial.
En general, tiene varias formas de lograr esto:
rm fileName_{100..100000}
será expandido por el shell en aproximadamente 100,000 nombres de archivo. Si el nombre base es una ruta larga y el número es lo suficientemente alto, puede superar la longitud máxima de una línea de comando con este enfoque.
El forbucle
for i in $(seq 100 100000); do rm fileName_$i; done
no sufre este problema, pero es una forma relativamente lenta de eliminar los archivos, ya que el shell tiene que realizar la sustitución de variables y ejecutar rm aproximadamente 100,000 veces.
Ambos métodos anteriores pueden causar advertencias si 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, hay algunas diferencias sutiles:
find . -name 'fileName_[100-100000]' -exec rm {} \;
se sigue en marcha el rmprograma de aproximadamente 100.000 veces, mientras que la sustitución de la final \;por +tratará de minimizar el número de subprocesos. Es probable que ambos métodos sean (mucho o un poco) más lentos que los -deleteque no utilizan comandos externos, sino que invocan llamadas del sistema.
Sin embargo, siempre verifique primero si el patrón realmente coincide con los archivos a los que desea apuntar:
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 deseaba conservar y dejaría los archivos que deberían haberse eliminado.
Use el siguiente comando:
find . -name 'fileName_[100-100000]' -exec rm {} \;
Eso eliminará archivos de 100 a 100000.
Más información: Sitio
[100-100000] clase de caracteres solo coincide con un solo carácter, por lo que solo puede coincidir con 0 o 1.
{x..y}a toda la lista. Por ejemplo, si lo usaecho test{1..3}, se expandiráecho test1 test2 test3y luego se ejecutará. Como puede ver, se imprimetest1 test2 test3. Del mismo modo, si el{x..y}no está conectado a ningún argumento, solo pondrá los números allí. Por ejemploecho test {1..3}, solo imprimirátest 1 2 3.