从路径中获取文件名

时间:2012-11-20 10:30:37

标签: shell unix awk cut

我有一个文件file.txt具有以下结构: -

./a/b/c/sdsd.c
./sdf/sdf/wer/saf/poi.c
./asd/wer/asdf/kljl.c
./wer/asdfo/wer/asf/asdf/hj.c

如何从路径中仅获取c文件名。 即,我的输出将是

sdsd.c
poi.c
kljl.c
hj.c

5 个答案:

答案 0 :(得分:4)

使用awk可以做到这一点。

设置字段分隔符FS =“/”,$ NF将打印每条记录的最后一个字段。

awk 'BEGIN{FS="/"} {print $NF}' file.txt

awk -F/ '{print $NF}' file.txt

或者,您可以像这样使用cut和unix命令rev

rev file.txt | cut -d '/' -f1 | rev

答案 1 :(得分:4)

您可以使用basename命令:

basename /a/b/c/sdsd.c

会给你sdsd.c

有关file.txt中的文件列表,请执行以下操作:

while IFS= read -r line; do basename "$line"; done < file.txt

答案 2 :(得分:1)

最简单的一个($NF是当前行的最后一列):

awk -F/ '{print $NF}' file.txt

或使用&amp; parameter expansion

while read file; do echo "${file##*/}"; done < file.txt

bashbasename

while read file; do basename "$file"; done < file.txt

<强>输出

sdsd.c
poi.c
kljl.c
hj.c

答案 3 :(得分:1)

Perl解决方案:

perl -F/ -ane 'print $F[@F-1]' your_file

你也可以使用sed:

sed 's/.*[/]//g' your_file

答案 4 :(得分:1)

使用sed

$ sed 's|.*/||g' file
sdsd.c
poi.c
kljl.c
hj.c