我有一个包含多个完整路径的文件
/home/pi/1.txt
/home/pi/2.txt
/home/pi/3.txt
我希望得到每个文件的基本名称
1.txt
2.txt
3.txt
我只知道我可以获得每一行并使用命令
basename
是否有可能更简单地实现我的目标?谢谢。
答案 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
将“/”作为字段分隔符并打印每行的最后一个字段。