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文件,然後匹配本書的標題和本書的作者,然後交換它們,最後刪除本書標題末尾的_。 這適用於幾乎所有情況,但是當書的標題包含 - 這不起作用。我怎麼能匹配子字符串_-而不是隻是這個字符 - ?我認爲這將解決我的問題。