我想请求一个 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