Me gustaría ejecutar una línea de comando:
cd ~/www/tmp/; rm -P 2*
Pero recibo un error si no hay archivos que comiencen con 2.
-fSin embargo, usted pensaría que me gustaría usar :
-f Attempt to remove the files without prompting for confirmation, regardless of the file's permissions. If the file does not exist, do not display a diagnostic message or modify the exit status to reflect an error.
Y yo hago la atención sobre el archivo permissions- si hay algo raro pasa, yo preferiría la orden de interrupción. Solo quiero suprimir los errores 'no existe'.
He examinado algunas otras preguntas con 'errores rm', y he encontrado estas dos que parecen (algo) relevantes:
Eliminar archivos y directorios por sus nombres. El fichero o directorio no existe
Pero, no entiendo todo lo que sucede en las respuestas a esta pregunta, y no sé si lo necesito.
El touchtruco sugerido en esta pregunta:
¿Rm no informa cuando falta un archivo?
Parece viable, ya que no creo que me importe el golpe de rendimiento (pero ¿qué tipo de golpe de rendimiento tomarías? Es decir, ¿es esta una técnica razonablemente escalable o solo estoy aprendiendo hábitos muy malos?)
No estoy seguro de cómo haría un if-thendentro de la línea de comando.
¿Hay alguna otra opción para una simple limpieza de línea de comando cortar-pegar?
¿ find -deleteFuncionaría mejor para mi caso? Si es así, ¿por qué?
error en cuestión:
rm: 2*: No such file or directory
fuente

rm, así que tendrá que decir qué es eso.zshcomo su shell interactivo? ¿Estás recibiendo unNo matches founderror?2*a rm en lugar de expandirla a una lista de archivos. Mire el error en cuestión: dice que rm se queja, no sh / bas / zsh / ...Respuestas:
Sólo para llamar
rm -Ppor existente archivos regulares cuyos nombres coinciden con un patrón en un directorio (pero no por debajo):P.ej,
Para hacer coincidir solo los no directorios, use
! -type den lugar de-type f. La diferencia es que! -type dsería cierto para una gama más amplia de tipos de archivos (enlaces simbólicos, canalizaciones con nombre, sockets, etc.)Puesto que desea que se le pregunte para algunas condiciones sobre los archivos encontrados, se debe no utilizar
-deleteen lugar de-exec rmdesde que funciona comorm -f.Eliminar
-maxdepth 1para dejarfindmirar en subdirectorios de forma recursiva.fuente
! -type dpodría estar más cercarm 2*, creo.find ~/www/tmp/ -maxdepth 1 -type f -name '2*' -exec rm -P {} +-P.-type f, pero no sabía cómormactuar así, así que la sugerencia de @ Kusalanada fue acertada, y la diferenciación / explicación es excelente para aprender.rm 2*(.)en zsh).