2010-11-06 9 views
19

Soy bastante nuevo en Linux (CentOS en este caso). Tengo una carpeta con aproximadamente 2000 archivos en ella. Me gustaría idealmente ejecutar un comando en el símbolo del sistema que escribiría el nombre de todos los archivos en un solo archivo de texto.Cómo enviar la lista de archivos en una carpeta a un archivo txt en Linux

Si tengo que hacerlo, podría escribir un programa real para hacerlo también, solo estaba pensando que podría haber una manera de hacerlo desde el símbolo del sistema.

+1

Tenga cuidado con esto, es posible que los nombres de archivo contengan todo tipo de personajes difíciles. p.ej. nueva línea –

Respuesta

49

sólo puede utilizar

ls > filenames.txt 

(por lo general, comienzan una cáscara mediante el uso de "Terminal", o "cáscara", o "golpe"). Es posible que tenga que utilizar cd para ir a esa carpeta primera o puede ls ~/docs > filenames.txt

+1

corta y dulce! –

+0

genial, funciona de maravilla y es realmente simple. – alchemical

+0

Afortunadamente busqué en Google esto antes de escribir un pequeño script bash! – JohnAllen

4

Si sólo los nombres de los archivos normales se paralizan inmediatamente dentro de un directorio (asumir que es ~/dirs) son necesarios, se puede hacer

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

Cómo ignorar ciertos archivos como archivos de copia de seguridad (archivos que tienen "~" como sufijo en sus nombres) ? –

+0

@VickyDev Una forma sería filtrar la salida de 'find' a través de' grep': 'find ~/docs -type f -maxdepth 1 | grep -v '~ $'> filenames.txt' – usta

+0

@VickyDev Una manera más limpia es usar 'find''s' -name' con '-not':' find ~/docs -type f -maxdepth 1 -not - name '* ~'> filenames.txt' – usta

Cuestiones relacionadas