2010-10-26 7 views
4

Je suis en train de mettre le résultat d'une commande find dans un fichier texte sur un shell bash unixproblème la redirection de trouver un fichier

utilisant:

find ~/* -name "*.txt" -print > list_of_txt_files.list 

Cependant, les séjours list_of_txt_files.list vide et je dois tuer la trouvaille pour l'avoir retourner l'invite de commande. J'ai plusieurs fichiers txt dans mon répertoire personnel

Sinon, comment enregistrer le résultat d'une commande find dans un fichier texte à partir de la ligne de commande. Je pensais que cela devrait fonctionner

Répondre

5

La première chose que je voudrais faire est d'utiliser des guillemets simples (quelques coquilles élargiront les jokers, mais je ne pense pas bash le fait, au moins par défaut), et le premier argument est find un répertoire, pas une liste de fichiers:

find ~ -name '*.txt' -print > list_of_txt_files.list 

Au-delà, il peut juste être prend beaucoup de temps, mais je ne peux pas imaginer que quelqu'un ayant que de nombreux fichiers texte (vous dites que vous avez beaucoup mais il faudrait être assez massif pour ralentir find). Essayez d'abord sans la redirection et voir ce qu'il génère:

find ~ -name '*.txt' -print 
+0

Ma machine fonctionnait très lentement lorsque j'ai essayé cette commande avec et sans rediriger la sortie vers le fichier. La machine lente ralentissait considérablement la sortie redirigée, c'est-à-dire qu'après quelques minutes, le fichier était toujours à zéro octet alors que sans la redirection de sortie, les fichiers * .txt étaient immédiatement listés. Maintenant que ma machine a plus de ressources, les deux voies semblent aussi rapides. – harijay

1

Vous pouvez rediriger la sortie vers un fichier et la console ensemble en utilisant tee.

find ~ -name '*.txt' -print | tee result.log 

Ceci permet de rediriger la sortie à la console et à un fichier et par conséquent, vous ne devez pas deviner si si la commande est effectivement en cours d'exécution.