如何通过查找文件名创建一个 txt 文件,并将文件名全部替换为

如何通过查找文件名创建一个 txt 文件,并将文件名全部替换为

我想请求一个 UNIX 单行程序来实现这一点

我通过这个方法获取文件名 find . -type f > filenames.txt是可以的,但是我想获取如下所示的文本文件:

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

第二个字段应该是用所有字符([a-yA-Y] 但数字)替换的文件名。原因是该字段由 ISBN(由 0-9 和 X 组成)组成,然后这是我的关键字段。

然后我像这样在 filenamekey 中搜索 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}'       

会有复杂的单行代码吗?

多谢!

答案1

您可以尝试sed

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

答案2

尝试

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

相关内容