Linux/macOS终端命令,如何从包含完整路径的文件名 获取 不包含文件夹路径只包含文件名的 基本名称
一个简单的提示,如果你正在编写一个 Linux shell 脚本,并且需要从一个完整的(规范的)目录 / 文件路径中获取文件名,你可以像这样使用 Linux basename 命令:
1 | $ basename /foo/bar/baz/foo.txt |
或者,如果您知道文件名扩展名并希望获取文件名的第一部分(基本文件名,即扩展名之前的部分),则也可以使用以下命令:
1 | $ basename /foo/bar/baz/foo.txt .txt |
反之,如果想要只获得文件完整路径名的文件夹路径,去掉文件名称,则可以使用dirname
命令:
1 | $ dirname /foo/bar/baz/foo.txt |
结合 find
命令,实现查找指定目录及其子目录下所有以.pdf结尾的文件,并在find的查找结果中只显示文件名,不显示文件夹路径:
1 | $ find . -iname "*python*.pdf" -exec basename {} \; |
关于find
命令:-name
参数严格区分大小写,如python
和Python
不同,.PDF
和.pdf
也不同;-iname
参数则不区分大小写,包括文件名和扩展名都不区分,python
和Python
都会匹配,.PDF
和.pdf
也都会匹配。
关于basename
命令的更多功能:
1 |
|