Shell de commande/script pour supprimer les fichiers dont les noms sont dans un fichier texte
J'ai une liste de fichiers dans un .fichier txt (dire list.txt). Je veux supprimer les fichiers dans la liste. Je n'ai pas fait de script avant. Certains pourraient donner le script shell/commande je peux utiliser. J'ai shell bash.
while read -r filename;do
rm "$filename"done<list.txt
est lente.
rm $(<list.txt)
échouera si il y a trop d'arguments.
Je pense que cela devrait fonctionner:
xargs -a list.txt -d'\n' rm
Bien que rm $(<list.txt) est plus rapide, +1 pour la mention de la limitation sur le nombre d'arguments. $ for i in *; do echo $i; done > ~/ $ rm frd.xml $ tout lu f; do rm $f; fait < ~/a Le code ci-dessus fonctionne donné par un collègue. Cela ressemble très fort à votre réponse. Merci!!!! est-ce à supprimer des fichiers dans des sous-dossiers? xargs: illegal option -- xargs option a fonctionné pour moi...bien sûr....j'ai dû garder 1 nom de fichier par ligne, sans espace entre les deux, pas de guillemets au début et à la fin....complètement aseptisé texte brut chaîne fonctionne....et je n'avais plus de 900 000 fichiers à supprimer
Votre question dit que vous avez une liste de noms de fichiers dans list.txt. Apparemment, vous n'avez pas. 🙂 Ou alors il faut donner le chemin complet lists.txt
Si les noms de fichier ont des espaces à l', aucune des autres réponses de travail; ils vont traiter chaque mot dans un fichier distinct nom. En supposant que la liste de fichiers est en list.txt, ce sera toujours:
while read name;do
rm "$name"done< list.txt
Bon point. Le problème est que l'OP n'a pas un fichier appelé list.txt c'est donc lui causer des problèmes pour certaines raisons 😉 La droite. Voir mon commentaire sur Tim Pote de réponse.
sa me donne une erreur. rm: ne peut enlever 'cat': Aucun fichier ou répertoire. rm: ne peut enlever 'list.txt': Aucun fichier ou répertoire Changé de format légèrement. Avez-vous utiliser les tiques avant? Remarque @TimPote réponse pourrait être mieux? merci pour la réponse. Il semble y avoir quelque chose de mal avec mon environnement bash. Mais j'ai reçu aucun un pour vérifier mon poste de travail à mon bureau actuellement et je ne peux pas poster ce problème ici. Donc, Il suffit d'attendre jusqu'à lundi(jour ouvrable suivant) jusqu'à ce que quelqu'un prend un coup d'oeil. UUoC! en.wikipedia.org/wiki/Cat_(Unix)#Useless_use_of_cat Oh wow, je n'avais aucune idée. Merci pour ces éclaircissements! Remarque votre premier lien était la plus intéressante, surtout en ce qui concerne l'exemple précis que j'ai posté, répété ici: partmaps.org/era/unix/award.html
est lente.
échouera si il y a trop d'arguments.
Je pense que cela devrait fonctionner:
rm $(<list.txt)
est plus rapide, +1 pour la mention de la limitation sur le nombre d'arguments.$ for i in *; do echo $i; done > ~/ $ rm frd.xml $ tout lu f; do rm $f; fait < ~/a Le code ci-dessus fonctionne donné par un collègue. Cela ressemble très fort à votre réponse. Merci!!!!
est-ce à supprimer des fichiers dans des sous-dossiers?
xargs: illegal option --
xargs option a fonctionné pour moi...bien sûr....j'ai dû garder 1 nom de fichier par ligne, sans espace entre les deux, pas de guillemets au début et à la fin....complètement aseptisé texte brut chaîne fonctionne....et je n'avais plus de 900 000 fichiers à supprimer
OriginalL'auteur yazu
Essayer cette commande:
list.txt
. Apparemment, vous n'avez pas. 🙂Ou alors il faut donner le chemin complet lists.txt
OriginalL'auteur Tim Pote
Si les noms de fichier ont des espaces à l', aucune des autres réponses de travail; ils vont traiter chaque mot dans un fichier distinct nom. En supposant que la liste de fichiers est en
list.txt
, ce sera toujours:list.txt
c'est donc lui causer des problèmes pour certaines raisons 😉La droite. Voir mon commentaire sur Tim Pote de réponse.
OriginalL'auteur Adam Liss
Suivantes doivent travailler et vous laisse de l'espace pour faire d'autres choses en boucle.
Edit: ne le faites pas, voir ici: http://porkmail.org/era/unix/award.html
for file in $(cat list.txt); do rm $fichier; doneChangé de format légèrement. Avez-vous utiliser les tiques avant? Remarque @TimPote réponse pourrait être mieux?
merci pour la réponse. Il semble y avoir quelque chose de mal avec mon environnement bash. Mais j'ai reçu aucun un pour vérifier mon poste de travail à mon bureau actuellement et je ne peux pas poster ce problème ici. Donc, Il suffit d'attendre jusqu'à lundi(jour ouvrable suivant) jusqu'à ce que quelqu'un prend un coup d'oeil.
UUoC! en.wikipedia.org/wiki/Cat_(Unix)#Useless_use_of_cat
Oh wow, je n'avais aucune idée. Merci pour ces éclaircissements! Remarque votre premier lien était la plus intéressante, surtout en ce qui concerne l'exemple précis que j'ai posté, répété ici: partmaps.org/era/unix/award.html
OriginalL'auteur yamen
Pour une rapidité d'exécution sur macOS, où
xargs
séparateur personnaliséd
n'est pas possible:OriginalL'auteur Cœur