使用shell脚本从文件中提取文件名

使用shell脚本从文件中提取文件名

我有一个文本文件,其中包含以下行:

/u/tux/abc/spool/frtbla_mcdetc_0000149099_20101126135009990_1.tif

我想提取frtbla_mcdetc_0000149099_20101126135009990_1.tif; 最后一个斜杠 ( ) 后面的单词/

答案1

如果您处于类似 Linux 的环境中,则可以使用该basename实用程序:

basename $(<your_file)

答案2

使用此命令

cat text_file_name | cut -d '/' -f 6

答案3

如果您知道目录结构的确切格式并且它不会改变,则可以使用cut

$ cut -f6 -d '/' file.txt

这里使用 cut 将目录分隔符作为分隔符,并提取第 6 个。

如果你所知道的只是行的最后一部分但不知道目录结构,您rev也可以使用:

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

这里文件被反转了,并且第一的提取字段,然后再次反转。

答案4

我不知道 Aix 中的标准 shell 是什么,但是bash它可用并且支持编辑变量的扩展。

如果您的全名在变量中FileName,则${FileName##*/}显示名称时会删除所有前导字符,直到最后一个/;相反,${FileName#*/}会删除直到第一个/,而会${FileName%/*}从最后一个/(即目录路径)删除尾随字符。

如果您通过命令生成文件名find,那么您需要如下命令:

find ... | while read FileName; do echo ${FileName##*/}; done

如果在文本文件中:

while read FileName; do echo ${FileName##*/}; done < FileList.txt

echo用您需要对名称进行的任何处理来替换该命令。

相关内容