
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
-execdir
executa o seguinte comando para cada resultado.basename {} \;
remova a peça antes do final/
. Os{}
substitutos para cada diretório encontrado. Vejaman find
para mais informações.