2010-11-06 14 views
19

Je suis assez nouveau sur Linux (CentOS dans ce cas). J'ai un dossier avec environ 2000 fichiers dedans. Je voudrais idéalement exécuter une commande à l'invite de commande qui écrirait le nom de tous les fichiers dans un seul fichier txt.Comment envoyer la liste de fichiers dans un dossier dans un fichier txt sous Linux

Si je devais, je pourrais écrire un vrai programme pour le faire aussi, je pensais juste qu'il pourrait y avoir un moyen de le faire simplement à l'invite de commande.

+1

attention avec cela, il est possible que les noms de fichiers contiennent toutes sortes de caractères complexes. par exemple. newline –

Répondre

49

vous pouvez simplement utiliser

ls > filenames.txt 

(habituellement, lancer un shell en utilisant « Terminal », ou « shell » ou « Bash ».) Vous devrez peut-être utiliser cd pour aller dans ce dossier premier , ou vous pouvez ls ~/docs > filenames.txt

+1

court et doux! –

+0

cool, fonctionne très bien, et vraiment simple. – alchemical

+0

Heureusement, j'ai googlé ceci avant d'écrire un petit script bash! – JohnAllen

4

Si seulement les noms de fichiers réguliers immédiatement contenus dans un répertoire (en supposant qu'il est ~/dirs) sont nécessaires, vous pouvez le faire

find ~/docs -type f -maxdepth 1 > filenames.txt 
+0

Comment ignorer certains fichiers comme les fichiers de sauvegarde (les fichiers ayant" ~ "comme suffixe dans leurs noms) ? –

+0

@VickyDev Un moyen serait de filtrer la sortie 'find' à travers' grep': 'find ~/docs -type f -maxdepth 1 | grep -v '~ $'> filenames.txt' – usta

+0

@VickyDev Un moyen plus simple est d'utiliser 'find'' -name' avec '-not':' find ~/docs -type f -maxdepth 1 -not - nom '* ~'> filenames.txt' – usta

Questions connexes