como remover todos os arquivos excluir arquivos específicos [duplicados]

0

Em / var / log / hive , temos muitos arquivos de log

queremos remover todos os arquivos, exceto os seguintes, que não devem ser removidos

hivemetastore.log
hiveserver2-report.json.tmp
hivemetastore-report.json.tmp
    
por yael 07.08.2018 / 10:27

3 respostas

1

Como afirmado na pergunta 153862 mencionada por Kamaraj, use find. Basta usar várias entradas de ! -name :

$ ls
hivemetastore.log  hivemetastore-report.json.tmp  hiveserver2-report.json.tmp  1  2  3  4
$ find . ! -name 'hivemetastore.log' ! -name 'hivemetastore-report.json.tmp' ! -name 'hiveserver2-report.json.tmp' -type f -exec rm -f {} +
$ ls
hivemetastore.log  hivemetastore-report.json.tmp  hiveserver2-report.json.tmp
    
por 07.08.2018 / 10:41
0

Saindo do comentário do @ Kamaraj - você pode usar find para procurar vários arquivos usando a opção -o e, em seguida, negá-lo e usar -exec to rm o restante.

Listar todos os arquivos, exceto os nomeados:

find . -type f ! \( -name 'hivemetastore.log' -o -name 'hiveserver2-report.json.tmp' -o -name 'hivemetastore-report.json.tmp' \)

Encadeie um exec para rm desses arquivos:

find . -type f ! \( -name 'hivemetastore.log' -o -name 'hiveserver2-report.json.tmp' -o -name 'hivemetastore-report.json.tmp' \) -exec rm -f {} +
    
por 07.08.2018 / 10:41
0

Tente isso,

Para obter a lista de arquivos que não sejam hivemetastore.log ,hiveserver2-report.json.tmp, hivemetastore-report.json.tmp :

find  /var/log/hive -type f ! -name "hivemetastore.log" ! -name "hiveserver2-report.json.tmp" ! -name "hivemetastore-report.json.tmp" -print

Para excluir e obter a lista de arquivos excluídos:

find  /var/log/hive -type f ! -name "hivemetastore.log" ! -name "hiveserver2-report.json.tmp" ! -name "hivemetastore-report.json.tmp" -delete -print
    
por 07.08.2018 / 10:42