Quiero buscar varios archivos usando find y eliminarlos todos usando -exec. Intenté

find ./ -type f -name fileA -o -name fileB -exec rm {} \; 

pero esto parece eliminar los archivos «fileB», pero no fileAs.

Comentarios

  • También eliminará cualquier directorio llamado " fileB ", por cierto.
  • @Wildcard No con rm directo (' lo intentará pero fallará ).
  • @Kusalananda, ah, claro.

Responder

-o también se aplica a la acción, por lo tanto, debe agrupar las cosas:

find ./ -type f \( -name fileA -o -name fileB \) -exec rm {} \; 

Por cierto, su find La implementación también podría admitir -delete:

find ./ -type f \( -name fileA -o -name fileB \) -delete 

Comentarios

  • y si no ' t, probablemente admita -exec rm {} +

Answer

Otra alternativa:

 WARNING: it is possible that due to funny characters in directory names it is possible that unintended files might be deleted. find ./ -type f \( -name fileA -o -name fileB \) -print | xargs rm -f 

O si es posible, atraparlos archivos con personajes divertidos:

 NOTE: On some systems -print0 and -0 options are not available. But this would be the preferred and safer method) find ./ -type f \( -name fileA -o -name fileB \) -print0 | xargs -0 rm -f 

Comentarios

  • Me gusta cómo regresaste casi un año después solo para agregar la nota sobre los nombres de los archivos, esa ' es la dedicación. : D

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *