¿Cómo 'tocar' los archivos de forma recursiva?


40

Necesito cambiar la marca de tiempo de aproximadamente 5000 archivos.

Escribiendo touch file1.txt, touch file2.txtme va a llevar siempre.

¿Hay alguna manera de hacer algo en la línea de touch -R *?


1
quieres decir esto touch file{1..3}.txt?
Avinash Raj

2
No especificó qué shell está utilizando, pero con zsh, touch **/*es conveniente.
Marc Glisse 01 de

@Marc Glisse Tenga en cuenta que la lista de argumentos fácilmente se hace demasiado larga.
Bac0n

En bash, debe configurar globstar antes de poder usar touch **
bac0n

Respuestas:


71

Puede usar el findcomando para encontrar todos sus archivos y ejecutarlos touchen cada archivo encontrado usando-exec

find . -type f -exec touch {} +

Si desea filtrar su resultado solo para archivos de texto, puede usar

find . -type f -name "*.txt" -exec touch {} +

17
Sugeriría usar -execel +terminador de (en lugar de \;). Esto encadenará múltiples argumentos en cada touchinstancia (hasta el límite de argumento del sistema) y, por lo tanto, desembolsará mucho menos (y probablemente sea más rápido).
Oli


2
Y para una ejecución en seco, simplemente omita la -exec touch {} +parte, e imprimirá en su terminal lo que habría afectado.
Alex

55
Gracias, aunque creo que a 'find' le falta su primer parámetro. find . -type f -exec touch {} +
giltsl

¿Qué sucede si solo quiero cambiar el tiempo de acceso, no el tiempo de modificación? ¿Debería ser "find -type f -exec touch -a {} +"?
weeo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.