Como criar um novo arquivo que forneça o nome do arquivo e suas informações de diretório de origem

0

Eu tenho um diretório que contém tantos sub-diretórios e arquivos neles. Gostaria de criar um arquivo que forneça cada nome de arquivo e suas informações de caminho de diretório de origem

Por exemplo:

Eu tenho um exemplo de nome de pasta que contém sub-diretórios sample1 e sample2.

Eu tenho ex1.csv , ex2.csv na amostra 1 e ex3.csv , ex4.csv no diretório da amostra 2.

Eu preciso criar um arquivo de texto (ou) arquivo CSV que forneça as informações da seguinte maneira.

ex1.csv,sample/sample1
ex2.csv,sample/sample1
ex3.csv,sample/sample2

Seria ótimo se alguém me ajudasse a criar o arquivo de script no UNIX.

Eu tentei: $ find sample -type f -printf '%f,%h\n'

Como estou usando o Solaris, ele não me permite usar printf e não tenho acesso para instalar outros utilitários.

    
por vinod kumar 30.08.2016 / 09:30

1 resposta

3

Espero que isto seja compatível com o seu Solaris - testei-o no SunOS 5.10 com o bash 4.3.26:

find . | while read f; do
    if [ ! -d "$f" ]; then
        echo $(basename "$f"),$(dirname "$f")
    fi
done

Isso simplesmente usa basename e dirname para dividir o nome do arquivo.

$ find test | while read f; do if [ ! -d "$f" ]; then echo $(basename "$f"),$(dirname "$f"); fi; done
ex4,test/sample2
ex3,test/sample2
ex2,test/sample1
ex1,test/sample1
    
por 30.08.2016 / 09:58