Excluindo GRANDE número de arquivos (exec, loops ..) [duplicado]

1

Eu tenho um grande número de arquivos para excluir, que seguem o seguinte formato:

esymac_logEvents.log.5_2017-Feb-06_02-39-17.Z_2017-Feb-08_02-39-14.Z_2017-Feb-09_02-39-14.Z_2017-Feb-11_02-39-11.Z_2017-Feb-13_02-39-08.Z_2017-Feb-16_02-39-05.Z_2017-Feb-18_02-39-3.Z_2017-Feb-20_02-39-02.Z_2017-Mar-02_12-06-57

esymac_logEvents.log.6_2017-Feb-07_02-39-15.Z_2017-Feb-08_02-39-14.Z_2017-Feb-09_02-39-14.Z_2017-Feb-16_02-39-05.Z_2017-Feb-18_02-39-03.Z_2017-Feb-19_02-39-03.Z_2017-Feb-20_02-39-2.Z_2017-Feb-21_02-38-55.Z

esymac_logEvents.log.6_2017-Feb-07_02-39-15.Z_2017-Feb-09_02-39-14.Z_2017-Feb-12_02-39-10.Z_2017-Feb-15_02-39-06.Z_2017-Feb-16_02-39-05.Z_2017-Feb-17_02-39-04.Z_2017-Feb-19_02-39-3.Z_2017-Feb-20_02-39-02.Z_2017-Feb-21_02-38-55.Z

esymac_logEvents.log.6_2017-Feb-10_02-39-12.Z_2017-Feb-15_02-39-06.Z_2017-Feb-18_02-39-03.Z_2017-Feb-19_02-39-03.Z_2017-Feb-20_02-39-02.Z_2017-Feb-21_02-38-55.Z

esymac_logEvents.log.5_2017-Feb-06_02-39-17.Z_2017-Feb-07_02-39-15.Z_2017-Feb-10_02-39-12.Z_2017-Feb-19_02-39-03.Z_2017-Feb-22_02-39-05.Z_2017-Feb-23_02-39-09.Z

esymac_logEvents.log.5_2017-Feb-06_02-39-17.Z_2017-Feb-08_02-39-14.Z_2017-Feb-11_02-39-11.Z_2017-Feb-12_02-39-10.Z_2017-Feb-14_02-39-07.Z_2017-Feb-15_02-39-06.Z_2017-Feb-17_02-39-4.Z_2017-Feb-22_02-39-05.Z_2017-Feb-23_02-39-09.Z

esymac_logEvents.log.6_2017-Feb-09_02-39-14.Z_2017-Feb-13_02-39-08.Z_2017-Feb-17_02-39-04.Z_2017-Feb-19_02-39-03.Z_2017-Feb-21_02-38-55.Z

esymac_logEvents.log.6_2017-Feb-07_02-39-15.Z_2017-Feb-08_02-39-14.Z_2017-Feb-11_02-39-11.Z_2017-Feb-12_02-39-10.Z_2017-Feb-14_02-39-07.Z_2017-Feb-15_02-39-06.Z_2017-Feb-17_02-39-04.Z_2017-Feb-22_02-39-05.Z_2017-Feb-23_02-39-09.Z

Eu quero apagá-los, mas o comando rm () me dá o erro 'Argument list too large'. Não foi possível formular um comando depois de verificar postagens semelhantes. Existe alguma maneira de obter um comando que:

  • primeiro crie uma lista de argumentos com todos os arquivos esymac_logEvents.log. *,
  • remova os arquivos um por um, com um loop ou comando exec (talvez não seja um no atime, seria preferível remover o número máximo de argumentos rm () função pode receber)

Felicidades.

    
por EXHALEXHALE 06.03.2017 / 17:32

2 respostas

0

find /search/dir -name esymac*whatever*pattern* -exec rm \{\} \;
    
por 06.03.2017 / 17:46
0

Como você deseja manter todos os arquivos diferentes do formato mencionado, faça:

  1. Execute isso. Isso preencherá FilesToDelete.txt com arquivos / dir a serem excluídos. Revise isso para garantir que os arquivos listados sejam de fato os arquivos que você pretende excluir.

    find /path/to/dir/esymac_logEvents.log* | xargs ls -l > FilesToDelete.txt

  2. Depois de verificar o passo 1, faça

    find /path/to/dir/esymac_logEvents.log* -type f | xargs rm -f

  3. Se os diretórios também estiverem envolvidos e precisarem ser excluídos, ignore 2 e faça isso:

    find /dir/that/contains/esymac_logEvents.log* | xargs rm -rf

por 06.03.2017 / 18:11

Tags