terminal - todos los archivos que no se han editado hoy

3

Edito un montón de archivos txt con la línea

vim *.txt

pero lo que realmente me gustaría hacer es editar todos los archivos que no se hayan modificado en el último día (o n días, o n horas). ¿Cuál es la forma más común de hacer esto con la línea de comandos?

Joe
fuente

Respuestas:

10
vim $(find * -type f -mtime 0)

$() Es una sustitución de comando. Permite que se haga algo de magia (en este caso, proporciona una lista de archivos para que los edites). Puedes leer más sobre ellos aquí.

Dentro de la sustitución de comandos vamos a hacer una find comando que busca cualquier cosa en el directorio actual ( * ) eso es un file ( -type f ) y fue modificado hoy ( mtime 0 ).

mtime busca archivos que fueron modificados en n*24. Así que si mtime era igual a 1, si buscara archivos modificados ayer. También podrías usar mmin buscar archivos que hayan sido modificados n hace minutos.

vim $(find * -type f -mmin $[n * 1])

En este caso, reemplace n por minuto. Incluso podrías ir e intercambiar lo que quieras en ese arithmetic expansion para satisfacer sus necesidades.

qweet
fuente
+1 solo porque @slhch cambió la notación de $ () en lugar de backticks sustituidos: P ¿Por qué es tan importante?
confiq
2
@confiq No es tan importante, pero 1) es más fácil de leer 2) es más difícil cometer errores de anidación 3) se considera estándar ahora
slhck
1
Lo que realmente resolvió el problema fue la gran respuesta que resolvió mi problema, solo un comentario menor: vim $ (encontrar * .txt -type f '!'), Fue lo que realmente resolvió el problema (porque solo quería archivos txt y había un 'no' en la pregunta) pero estoy poniendo esto solo para completar. Gracias de nuevo...
Joe