terminal - tous les fichiers qui n'ont pas été édités aujourd'hui

3

J'édite un tas de fichiers txt avec la ligne

vim *.txt

mais ce que j'aimerais vraiment faire, c'est éditer tous les fichiers qui n'ont pas été modifiés le dernier jour (ou n jours ou n heures) - quel est le moyen le plus simple de le faire en ligne de commande?

Joe
la source

Réponses:

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

$()est une substitution de commande. Permet de faire de la magie (dans ce cas, vous fournir une liste de fichiers que vous pourrez éditer). Vous pouvez en savoir plus sur eux ici

À l'intérieur de la substitution de commande, nous allons faire une findcommande qui cherche dans le répertoire courant ( *) tout ce qui est un file( -type f) et a été modifié aujourd'hui ( mtime 0).

mtimerecherche les fichiers qui ont été modifiés dans n*24. Donc, si mtimeétait égal à 1, si rechercherait des fichiers modifiés hier. Vous pouvez également utiliser mminpour rechercher des fichiers qui ont été modifiés nil y a quelques minutes.

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

Dans ce cas, remplacez n par minute. Vous pouvez même aller et échanger ce que vous voulez en arithmetic expansionfonction de vos besoins.

qweet
la source
+1 seulement parce que @slhch a changé la notation $ () au lieu des backticks remplacés: P Pourquoi est-ce si important?
Confiq
2
@confiq Ce n'est pas si important mais 1) plus facile à lire 2) plus difficile de faire des erreurs de nidification 3) considéré comme standard maintenant
slhck
1
Absolument excellente réponse qui a résolu mon problème - juste quelques commentaires mineurs - vim $ (find * .txt -type f '!' -Mtime 0) était en fait ce qui résolvait le problème (parce que je ne voulais que des fichiers txt et qu'il y avait un dans la question) mais je ne mets cela que pour être complet. Merci encore ...
Joe