Я хотел бы попросить UNIX однострочную, чтобы сделать это

Я получаю имена файлов по find . -type f > filenames.txt , но я бы хотел получить текстовый файл, похожий на этот:

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

второе поле должно содержать имя файла, заменяемое всеми символами ([a-yA-Y], кроме чисел). Причина в том, что это поле состоит из номеров ISBN (состоит из 0-9 и X), которые являются полем моего ключа.

затем я выполняю поиск по имени файла, например так. Select filename from books where filenamekey like '%123456789X%';

В именах файлов не обязательно должен быть номер ISBN, но это возможно. В случае отсутствия ISBN ключ должен быть пустым или ненужным.

Я попробовал это:

    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}'       

будет ли сложный однострочник?

большое спасибо!

2 ответа2

2

Вы можете попробовать sed:

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

пытаться

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .