Bash 如何递归地从文件名中删除字符串
读取文件夹的名称,在文件名中查找并将其删除,例如: -- \约翰·卡特Bash 如何递归地从文件名中删除字符串,bash,Bash,读取文件夹的名称,在文件名中查找并将其删除,例如: -- \约翰·卡特 Marscatter-John Carter.pdf \Sylvia Alter\ Corre y no pares.mobi \Other Name\ see the diabolis.epub \西尔维亚·奥尔特 西尔维亚·奥尔特·科雷·莫比 \其他名称 其他名称-请参阅debulic.epub 它应该是这样的: -- \约翰·卡特 marsCarter.pdf \Sylvia Alt
Marscatter-John Carter.pdf
\Sylvia Alter\
Corre y no pares.mobi
\Other Name\
see the diabolis.epub
\西尔维亚·奥尔特西尔维亚·奥尔特·科雷·莫比 \其他名称
其他名称-请参阅debulic.epub 它应该是这样的: -- \约翰·卡特
marsCarter.pdf
\Sylvia Alter\
Corre y no pares.mobi
\Other Name\
see the diabolis.epub
你能给我一个主意吗如何得到它。谢谢您可以使用basename(1)
和dirname(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
谢谢你的回答。我曾考虑过类似的事情,但我把事情弄得一团糟,让它在同一个目录中递归更多的文件夹。非常感谢。