J'ai une liste de fichiers dans un fichier .txt (dites list.txt). Je veux supprimer les fichiers de cette liste. Je n'ai pas fait de script avant. Certains pourraient-ils donner le script / la commande shell que je peux utiliser. J'ai coquille bash. p>
7 Réponses :
Les éléments suivants doivent fonctionner et vous laisse de la place pour faire d'autres choses à mesure que vous bouclez. P>
Edit: Ne faites pas cela, voyez ici: http://porkmail.org/era /unix/award.html p>
pour fichier en $ (chat list.txt); do dm $ dossier; fait frappe> p>
sa donnant une erreur. RM: Impossible de supprimer "CAT": aucun fichier ou répertoire de ce type. RM: impossible de supprimer 'list.txt': aucun fichier ou répertoire de ce type
Format modifié légèrement. Avez-vous utilisé des tiques avant? NOTE @TIMPOTE La réponse pourrait être meilleure?
Merci d'avoir répondu. Il semble y avoir quelque chose de mal avec mon environnement Bash. Mais ne recevez personne pour vérifier mon poste de travail à mon bureau actuellement et je ne peux pas poster ce problème ici. Il suffit donc d'attendre le lundi (jour ouvrable suivant) jusqu'à ce que quelqu'un y envoie un coup d'œil.
@Adamliss: oh wow, je n'avais aucune idée. Merci d'éclairening! Remarque Votre premier lien était plus intéressant, d'autant plus qu'il se rapporte à l'exemple exact que j'ai publié, répété ici: Partmaps.org/era/unix/award.html
@yamen: Merci pour le repost. Je ne pouvais pas décider quel lien serait plus utile. En général, vous pouvez remplacer $ (CAT FOO) code> avec
$ (
Essayez cette commande:
rm -f $(<file)
Votre question dit que vous avez une liste de noms de fichiers dans list.txt code>. Apparemment, vous ne le faites pas. :-)
Soit cela ou vous devez donner le chemin complet à listers.txt
ou gio trash $ (
Si les noms de fichiers ont des espaces dans eux, aucune des autres réponses ne fonctionnera; Ils traiteront chaque mot comme nom de fichier séparé. En supposant que la liste des fichiers est dans list.txt code>, cela fonctionnera toujours:
while read name; do
rm "$name"
done < list.txt
Bon point. Le problème est que l'op n'a pas de fichier appelé list.txt code> de sorte que cela lui cause des problèmes pour une raison quelconque ;-)
Droit. Voir mon commentaire sur la réponse de Tim Pote.
xargs -a list.txt -d'\n' rm
Bien que rm $ (
$ pour i in *; faire écho $ i; fait> ~ / a $ rm fd.xml $ en lecture f; faire rm $ f; fait <~ / A Le code ci-dessus fonctionne donné par un collègue. Cela semble très similaire à votre réponse. Merci!
Est-ce que ceci supprimer des fichiers dans les sous-résidents aussi?
xargs: option illégale - un i>
Option de Xargs a fonctionné pour moi ... Bien sûr ... Je devais garder 1 nom de fichier par rangée, sans espaces entre, pas de citations au début et à la fin ... une chaîne de texte ordinaire complètement désinfectée fonctionne ... .et, j'ai eu plus de 900 000 fichiers à supprimer
Quelle est la différence entre $ (
$ (cat list.txt) code>? Est-il préférable à l'autre?
Pour une exécution rapide sur MacOS, où Xargs code> Délimiteur personnalisé
d code> n'est pas possible:
<list.txt tr "\n" "\0" | xargs -0 rm
sur Linux, vous pouvez essayer: dans mon cas, mon fichier .txt contenait une liste d'éléments du type *. ext code> et a fonctionné bien . p> p>
Je cherchais juste une solution à cela aujourd'hui et j'ai fini par utiliser une solution modifiée de certaines réponses et certaines fonctions utilitaires que j'ai.
// This is in my .bash_profile # Find ffe () { /usr/bin/find . -name '*'"$@" ; } # ffe: Find file whose name ends with a given string # Delete Gradle Logs function delete_gradle_logs() { (cd ~/.gradle; ffe .out.log | xargs -I@ rm@) }