
Estoy usando el comando "buscar" para eliminar algunos archivos inútiles de las extensiones dadas de todas las subcarpetas ubicadas en el directorio desde el cual estoy ejecutando el comando.
find -type f -name *.txt -delete
find -type f -name *.xml -delete
find -type f -name *.pdbqt -delete
find -type f -name *.txt -delete
¿Es posible combinar estos 4 comandos en uno para eliminar 4 tipos de archivos mediante 1 comando? ¿Es posible utilizar alternativamente buscar para eliminar TODOS los archivos que NO pertenecen a las extensiones *.dlg?
Respuesta1
Sin comillas *.txt
es malo. Verfind
La utilidad no genera todos los archivos cuando se utilizan comodines..
¿Es posible combinar estos 4 comandos en uno?
Sí. VerCombinando varios find
comandos en uno.
find . \( -name '*.txt' -o -name '*.xml' -o -name '*.pdbqt' \) …
(Esto usa 3 patrones porque su cuarto comando duplica el primero y no tiene sentido usar el mismo patrón dos veces).
¿Es posible utilizarlo alternativamente
find
para eliminar TODOS los archivos que NO pertenecen a las*.dlg
extensiones?
Sí (y supongo que quieres archivos normales, no todosarchivos):
find . -type f ! -name '*.dlg' # -delete
Si el comando anterior imprime archivos que realmente desea eliminar, ejecútelo con #
eliminación.
La ! -name '*.dlg'
prueba es negada -name '*.dlg'
. Tiene éxito si y sólo si -name '*.dlg'
fracasa.
Lo usaste -delete
en la pregunta, por lo que find
aparentemente lo apoyas. Los usuarios con menos potencia find
venfind
: -exec rm {} \;
vs. -delete
- ¿por qué se recomienda ampliamente el primero?
Tenga en cuenta que en su caso, bare find
funciona como find .
. Lo usé find .
explícitamente porque algunas implementaciones find
requieren al menos una ruta en la línea de comando.