删除存储在文件中的完整路径的路径前缀

时间:2017-04-08 03:15:02

标签: linux bash awk sed

我有一个包含多个完整路径的文件

/home/pi/1.txt
/home/pi/2.txt
/home/pi/3.txt

我希望得到每个文件的基本名称

1.txt
2.txt
3.txt

我只知道我可以获得每一行并使用命令

basename

是否有可能更简单地实现我的目标?谢谢。

4 个答案:

答案 0 :(得分:2)

我想出的最简单的方法是:

 basename -a $(<foo.txt)

这是有效的,因为进程替换$()是文件的重定向输出,然后由于分词而将其拆分为多个参数。 Basename采用-a多个args。

请注意,如果文件中的路径名中有空格(因为上述单词拼写),这不起作用。

答案 1 :(得分:2)

awk中的另一个人:

$ awk 'sub(/.*\//,"")||1' file
1.txt
2.txt
3.txt

答案 2 :(得分:1)

仅使用shell工具的解决方案:

readarray -t arr <file.txt
echo "${arr[@]##*/}"

这假设每个文件都是一行(即使是空格)。带有换行符的文件名将失败,因为文件中需要其他一些结构。

答案 3 :(得分:1)

@try:

awk -F"/" '{print $NF}'   Input_file

将“/”作为字段分隔符并打印每行的最后一个字段。