Tengo archivos fileName_1 , fileName_2 ... fileName_100000 donde los fileNames están numerados secuencialmente. ¿Cómo puedo eliminar los archivos de índice mayor que, digamos 100 ?
                    
                        command-line
                                
                    
                    
                        teaLeef
fuente
                
                
            fuente

{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.execllamada impone un límite al número de argumentos que puede tener un proceso. Puedes recuperarlo congetconf ARG_MAX. Por ejemplo, en mi sistema es2097152(~ 2.1 millones). Esto significa querm(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,
Eliminará todos los archivos (rangos de 100 a 100000) si el nombre del archivo contiene números en orden secuencial.
fuente
En general, tiene varias formas de lograr esto:
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
forbucleno 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: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:
Entonces, en este caso, eliminaría un archivo que deseaba conservar y dejaría los archivos que deberían haberse eliminado.
fuente
Use el siguiente comando:
Eso eliminará archivos de 100 a 100000.
Más información: Sitio
fuente
+lugar de\;... mira aquí . O, mejor aún, use el-deletecomando find .[100-100000]clase de caracteres solo coincide con un solo carácter, por lo que solo puede coincidir con 0 o 1.