
Tengo un directorio que contiene tantos subdirectorios y archivos. Me gustaría crear un archivo que proporcione el nombre de cada archivo y la información de la ruta del directorio de origen.
Por ejemplo:
- Tengo un nombre de carpeta de muestra que contiene los subdirectorios sample1 y sample2.
- Tengo ex1.csv, ex2.csv en el directorio de muestra 1 y ex3.csv, ex4.csv en el directorio de muestra 2
Necesito crear un archivo de texto (o) un archivo csv que brinde la información de la siguiente manera
ex1.csv,muestra/muestra1
ex2.csv,muestra/muestra1
ex3.csv,muestra/muestra2
Sería genial si alguien me ayudara a crear el archivo de script en Unix.
gracias de antemano
Respuesta1
Dada una estructura como
$ tree sample
sample
├── sample1
│ ├── ex1.csv
│ └── ex2.csv
└── sample2
├── ex3.csv
└── ex4.csv
2 directories, 4 files
puedes usar
$ find sample -type f -printf '%f,%h\n'
ex2.csv,sample/sample1
ex1.csv,sample/sample1
ex3.csv,sample/sample2
ex4.csv,sample/sample2
A partir de , los especificadores de formato man find
relevantes son-printf
%f File's name with any leading directories removed (only
the last element).
%h Leading directories of file's name (all but the last ele‐
ment). If the file name contains no slashes (since it is
in the current directory) the %h specifier expands to
".".
Si desea los resultados en un archivo, simplemente redirija la salida del comando usando el >
operador, por ejemplo
find sample -type f -printf '%f,%h\n' > filelist