![从文本文件中的文件列表中提取文件名](https://linux22.com/image/222483/%E4%BB%8E%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E5%88%97%E8%A1%A8%E4%B8%AD%E6%8F%90%E5%8F%96%E6%96%87%E4%BB%B6%E5%90%8D.png)
也许很简单,但我的头很痛。
我有一个文件列表,其路径位于名为stuff.txt
.看起来像这样:
c:\users\none\file1.txt
c:\users\none\file2.txt
g:\home\share\make.log
我怎样才能简单地将文件名输出到另一个文件,如下所示:
file1.txt
file2.txt
make.log
提前谢谢你了。
答案1
awk -F'\' '{ print $NF }' stuff.txt
这将字段分隔符设置为\
并打印每行的最后一个字段
答案2
使用乐(以前称为 Perl_6)
~$ raku -ne 'put IO::Spec::Win32.basename($_);' stuff.txt
#OR
~$ raku -ne 'put IO::Spec::Win32.basename($_.trim-trailing);' stuff.txt
Raku 是 Perl 家族的一种编程语言。上面的代码获取您的文件路径并将它们视为IO
对象,其中有四个主要类(Unix、Windows、Cygwin 和 QNX)。由于您有 Windows 路径,因此IO::Spec::Win32
会调用该方法(以正确理解路径分隔符)。最后basename
给你文件名。行尾似乎有一些空格,可以用trim
或清除trim-trailing
。
输入示例:
c:\users\none\file1.txt
c:\users\none\file2.txt
g:\home\share\make.log
示例输出:
file1.txt
file2.txt
make.log
https://docs.raku.org/type/IO/Spec/Win32
https://docs.raku.org/routine/basename
https://raku.org