Por que não encontra / rm -iname '* phpmyadmin' delete phpMyAdmin-Version-XYZ.zip?

8

Eu tenho este código a seguir:

find ./ -iname '*phpmyadmin' -exec rm -rf {} \;

Exclui um diretório chamado phpmyadmin , mas não exclui um arquivo chamado phpMyAdmin-Version-XYZ.zip

Mesmo se eu remover o -rf , ele ainda não será excluído (provavelmente porque um segundo problema com o -iname não afeta a insensibilidade a maiúsculas e minúsculas).

  1. Existe uma maneira de excluir qualquer inode em um único rm (file, dir, softlink)?
  2. Por que adicionar o -iname não tem efeito?

Nota: não encontrei um argumento "delete any inode" em man rm .

    
por JohnDoea 05.05.2017 / 05:51

2 respostas

31

O problema é que você está combinando um arquivo que termina em phpmyadmin ( sem distinção entre maiúsculas e minúsculas ) usando o padrão *phpmyadmin . Para obter qualquer arquivo que contenha a string phpmyadmin (sem distinção entre maiúsculas e minúsculas), use -iname '*phpmyadmin*' :

find ./ -iname '*phpmyadmin*' -exec rm -rf {} \;

Talvez a obtenção dos arquivos correspondentes antes da remoção seja sensata:

find ./ -iname '*phpmyadmin*'

Para responder sua primeira pergunta, não há opção em rm no espaço do usuário para lidar com inodes.

    
por 05.05.2017 / 05:57
2
find ./ -iname '*phpmyadmin*' -exec /usr/lib/klibc/bin/nuke {} +

Isso funciona mesmo se alguém criar um diretório -phpmyadmin.

    
por 05.05.2017 / 18:57

Tags