escrevendo nomes de arquivos de subdiretórios em um arquivo csv no linux

escrevendo nomes de arquivos de subdiretórios em um arquivo csv no linux

Anteriormente eu fiz uma pergunta muito semelhante, mas era apenas para um subdiretóriogravar arquivos em um subdiretório em um arquivo csv e salvá-lo no diretório pai na linha de comando do Linux. Eu tenho um diretório chamado 'dir' e contém 5 subdiretórios, sub1, sub2,..sub5. Cada subdiretório contém muitos arquivos. Gostaria de escrever uma lista de arquivos de todos os subdiretórios em um arquivo CSV e salvá-lo no diretório 'dir' com uma linha de comando no Linux. Meu código faz isso, exceto que eu quero apenas os nomes dos arquivos (nome1, nome2 etc), mas ele grava os nomes completos dos arquivos com o caminho (./sub1/nome1,./sub1/nome2, etc). A linha de comando que estou usando dentro da pasta dir é;

dir$ find . -type f  > names.csv

Responder1

Já que você marcou sua pergunta como 'Linux', presumo que você tenha GNU find- nesse caso você pode usar

find . -type f -printf '%f\n' > names.csv 

De man find:

          %f     File's  name  with  any leading directories removed (only
                 the last element).

Responder2

dir$ find . -type f -execdir basename {} \; > names.csv

Explicação

  • -execdirexecuta o seguinte comando para cada resultado.
  • basename {} \;remova a peça antes do final /. Os {}substitutos para cada diretório encontrado. Veja man findpara mais informações.

informação relacionada