Answers:
以下内容适用于 所有 shell中的字符串,而不仅仅是文件名,并且比剪切容易得多,因为您不需要知道在您想要的字段之前有多少字段:
$ foo=/path/to/file/split/by/slashes.txt
$ echo ${foo##*/}
slashes.txt
这使用'贪婪的修剪',即修剪所有内容,直到最后的'/',如下所述:
https://stackoverflow.com/questions/3162385/how-to-split-a-string-in-shell-and-get-the-last-field
${foo <-- from variable foo
## <-- greedy front trim
* <-- matches anything
/ <-- until the last '/'
}
我不知道Aix中的标准shell是什么,但是 bash
可用并支持编辑的变量扩展。
如果您的全名在变量中 FileName
, 然后 ${FileName##*/}
显示删除所有前导字符的名称,直到最后一个 /
;相比之下 ${FileName#*/}
删除第一个 /
,而 ${FileName%/*}
从最后删除尾随字符 /
(即目录路径)。
如果您通过a生成文件名 find
命令,然后你需要一个像这样的命令:
find ... | while read FileName; do echo ${FileName##*/}; done
如果在文本文件中:
while read FileName; do echo ${FileName##*/}; done < FileList.txt
更换 echo
通过您需要对名称进行的任何处理来命令。