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

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 uma amostra de nome de pasta que contém sub amostra1 e amostra2 diretórios nele
  • Eu tenho ex1.csv, ex2.csv na amostra 1 e ex3.csv, ex4.csv na amostra 2 diretório

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

ex1.csv, amostra / amostra1

ex2.csv, sample / sample1

ex3.csv, amostra / amostra2

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

Obrigado antecipadamente

    
por vinod kumar 30.08.2016 / 03:29

1 resposta

1

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 man find , os especificadores de formato -printf relevantes são

       %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, apenas redirecione a saída do comando usando o operador > , por exemplo,

find sample -type f -printf '%f,%h\n' > filelist
    
por steeldriver 30.08.2016 / 03:39