Você pode tentar sed
:
find . -type f | sed 'h;s/[^0-9X\/\.]//g;H;x;s/\n/;/'
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!
tente
find . -type f | sed 's/[-a-zA-Z\.\/]//g'' > filenames.txt
Tags command-line bash unix