bash - 如何以递归方式从文件名中删除字符串
问题描述
读取文件夹名称并在文件名中查找并从中删除,例如:
-- \
约翰卡特 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
你能给我一个如何得到它的想法。谢谢
解决方案
您可以使用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
推荐阅读
- python-3.x - 为什么我无法在我的 Jupyter Notebook (Python 3.6) 中导入 utils,尽管它已安装?
- python - TypeError:需要一个类似字节的对象,而不是'int' python3
- docker - 如何“docker exec”从头开始构建的容器?
- node.js - 如果我运行 while(1){},NodeJs 会发生什么
- node.js - 在 npm install 之前删除 node_modules?
- c# - 如何使 C# Combobox 数据源和数据绑定不同
- dns - res_query 不遵循 res_init,取消设置已设置的内容
- javascript - 用 javascript/jQuery 为 animate() 覆盖 !important
- firebase - fcm 网络推送通知 - 未打开 url(使用 click_action)
- javascript - getelementbyid 多ID展示