1
我有一个epub格式的电子书文件夹,它们的名字的形状是“title_of_the_book _-_ name_of_the_author”。我必须交换电子书名称的两部分,以便它们变成“name_of_the_author-title_of_the_book”。我写了几乎适用于所有情况的这个命令:在sed中匹配字符串中的特定子字符串
ls *.epub | sed 's/^\([^-]*\)-_\([^.]*\)/\2-\1/' | sed -E 's/.(.epub)$/\1/g'
我将解释代码。首先,我列出文件夹中的所有epub文件,然后匹配本书的标题和本书的作者,然后交换它们,最后删除本书标题末尾的_。 这适用于几乎所有情况,但是当书的标题包含 - 这不起作用。我怎么能匹配子字符串_-而不是只是这个字符 - ?我认为这将解决我的问题。