首页 > 解决方案 > 如何以递归方式从文件名中删除字符串

问题描述

读取文件夹名称并在文件名中查找并从中删除,例如:

-- \
约翰卡特 marsCarter - 约翰卡特.pdf

\Sylvia Alter
Sylvia Alter - Corre y no pares.mobi

\Other Name
其他名称 - 参见 diabolic.epub

它应该是这样的:

-- \
约翰卡特 marsCarter.pdf

\Sylvia Alter\
        Corre y no pares.mobi

\Other Name\
        see the diabolis.epub

你能给我一个如何得到它的想法。谢谢

标签: bash

解决方案


您可以使用basename(1)anddirname(1)来获取文件名和文件夹名。

> basename "./John Carter/marsCarter - John Carter.pdf"
> marsCarter - John Carter.pdf

> basename "$(dirname "./John Carter/marsCarter - John Carter.pdf")"
> John Carter

有了它,您可以尝试使用sed(1)从文件名中删除文件夹名称。

> echo "marsCarter - John Carter.pdf" | sed -r 's/ - John Carter//'
> marsCarter.pdf

推荐阅读