
Eu tenho um diretório que contém muitos subdiretórios e arquivos neles. Eu gostaria de criar um arquivo que forneça cada nome de arquivo e suas informações de caminho do diretório de origem
Por exemplo:
- Eu tenho um nome de pasta sample que contém os subdiretórios sample1 e sample2
- Eu tenho ex1.csv, ex2.csv na amostra 1 e ex3.csv, ex4.csv no diretório da amostra 2
Preciso criar um arquivo de texto (ou) arquivo csv que forneça as informações da seguinte maneira
ex1.csv, amostra/amostra1
ex2.csv, amostra/amostra1
ex3.csv, amostra/amostra2
Seria ótimo se alguém me ajudasse a criar o arquivo de script em unix
desde já, obrigado
Responder1
Dada uma estrutura como
$ tree sample
sample
├── sample1
│ ├── ex1.csv
│ └── ex2.csv
└── sample2
├── ex3.csv
└── ex4.csv
2 directories, 4 files
você pode 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
De , os especificadores de formato man find
relevantes são-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
".".
Se você quiser os resultados em um arquivo, basta redirecionar a saída do comando usando o >
operador, por exemplo
find sample -type f -printf '%f,%h\n' > filelist