Como fazer com que um arquivo txt seja encontrado com nomes de arquivo e nome de arquivo substituídos por todos [a-yA-Y]

0

Eu gostaria de pedir uma linha do UNIX para fazer isso

Eu recebo os nomes dos arquivos por find . -type f > filenames.txt , o que é bom mas eu gostaria de ter um arquivo de texto assim:

   filename;filenamekey
   ./fn123456789X-5.txt;./123456789X5.

o segundo campo deve ser o nome do arquivo substituído por todos os caracteres ([a-yA-Y], mas os números. A razão é que esse campo é composto de ISBNs (consiste em 0-9 e X), que é minha chave.

então eu pesquiso em filenamekey assim Select filename from books where filenamekey like '%123456789X%';

Nos nomes dos arquivos, não é necessário haver um ISBN, mas sim. No caso de não haver ISBN, a chave deve estar vazia ou ser lixo.

Eu tentei isso:

    find . -type f > filenames1.txt
    cat filename1.txt | sed -e 's/[^0-9X\/\.]//g' > filenamekey1.txt
    paste filename1.txt filenamekey1.txt | awk '{print $1,$2}'       

haveria um sofisticado one-liner?

muito obrigado!

    
por Walter Schrabmair 25.11.2016 / 16:19

2 respostas

2

Você pode tentar sed :

find . -type f | sed 'h;s/[^0-9X\/\.]//g;H;x;s/\n/;/'
    
por 25.11.2016 / 17:01
0

tente

find . -type f | sed 's/[-a-zA-Z\.\/]//g'' > filenames.txt
    
por 25.11.2016 / 17:01