supprimer le fichier - date spécifique
Comment faire pour Supprimer le fichier créé à une date précise??
ls -ltr | grep "Nov 22" | rm
-- pourquoi ce n'est pas wrking??
Le problème avec ton code, c'est que
rm
ne pas prendre d'entrée sur l'entrée standard stdin (via le tuyau de), vous devez transmettre les fichiers à supprimer en tant qu'arguments.OriginalL'auteur nachikethas | 2010-11-23
Vous devez vous connecter pour publier un commentaire.
Il y a trois problèmes avec votre code:
rm
prend ses arguments sur la ligne de commande, mais vous n'êtes pas en passant un nom de fichier sur la ligne de commande. Vous êtes à la transmission des données sur l'entrée standard, maisrm
ne pas lire that1. Il y a des façons de contourner cela.ls -ltr | grep "Nov 22"
n'est pas composé uniquement de noms de fichiers, il se compose de mutilé noms de fichier plus un tas d'autres informations telles que l'heure.Nov 22
, entre autres. Il ne sera pas attraper les fichiers que vous voulez dans les paramètres régionaux qui affiche les dates différemment.La
find
de commande vous permet de rechercher des fichiers selon des critères tels que leur nom correspondant à un certain modèle ou de leur date dans une certaine plage. Par exemple, la commande suivante liste les fichiers dans le répertoire courant et ses sous-répertoires qui ont été modifiés aujourd'hui (en passant par GMT date du calendrier). Remplacerecho
parrm --
une fois que vous avez vérifié que vous avez les bons fichiers.Avec GNU trouver, comme on en trouve sur Linux et Cygwin, il y a quelques options qui pourraient faire un meilleur travail:
-maxdepth 1
(doit être spécifié avant d'autres critères) les limites de la recherche dans le répertoire spécifié (c'est à dire qu'il n'est pas récursif).-mmin -43
correspond à des fichiers modifiés à plus de 42 minutes ago.-newermt "Nov 22"
correspond à des fichiers modifiés sur le ou après le 22 novembre (heure locale).Ainsi:
ou, plus abrégée:
Avec zsh, le
m
glob qualificatif les limites d'un modèle aux fichiers modifiés dans une certaine date relative de la gamme. Par exemple,*(m1)
se développe pour les fichiers modifiés dans les dernières 24 heures;*(m-3)
se développe pour les fichiers modifiés dans les dernières 48 heures (d'abord le nombre de jours est arrondi à un nombre entier, puis-
dénote une inégalité stricte);*(mm-6)
se développe pour les fichiers modifiés dans les 5 dernières minutes, et ainsi de suite.1
rm -i
(et la plainerm
pour les fichiers en lecture seule) qu'il utilise pour lire une confirmationy
avant la suppression.OriginalL'auteur Gilles
Si vous avez besoin d'essayer de trouver pour n'importe quel jour donné,
cela peut aider à
+
au lieu de\;
et vous obtiendrez un gain de performances lorsque vous faites correspondre les nombreux fichiers qu'il se comporte exactement commexargs
à cet égard.OriginalL'auteur ajreal
Vous serait mieux adapté à l'utilisation de la
find
commande:Cela va supprimer tous les fichiers d'un jour dans le répertoire courant et recursing en ses sous-répertoires. Vous pouvez utiliser '0' si vous voulez supprimer les fichiers créés aujourd'hui. Une fois que vous êtes satisfait de la sortie, retirez le
echo
et les fichiers seront vraiment être supprimé.OriginalL'auteur SiegeX
Si votre
find
prend en charge, comme GNUfind
n', vous pouvez utiliser:qui permet de trouver des fichiers qui ont été modifiés le 21 novembre.
OriginalL'auteur Dennis Williamson
Cela fonctionne
Bon point~ awk '{print $8 "\\ " $9}' peut de travail pour les cas simples, mais c'est risqué. Je préfère remplacer les espaces dans les noms de fichier en premier.
La pire chose que vous pouvez faire est d'essayer d'analyser ls, le 2e pire chose que vous pouvez faire est d'essayer de supprimer un fichier basé sur l'analyse ls. Voir Pourquoi je ne devrais pas Analyser les ls
Eh bien, j'accepte.
OriginalL'auteur gerry