私はepub形式の電子ブックを持つフォルダを持ち、その名前は "title_of_the_book _-_ name_of_the_author"という形になっています。私は電子ブックの名前の2つの部分を交換して、 "name_of_the_author-title_of_the_book"になる必要があります。私はほとんどすべての状況で動作するこのコマンドを書いた:文字列内の特定の部分文字列をsedと一致させる
ls *.epub | sed 's/^\([^-]*\)-_\([^.]*\)/\2-\1/' | sed -E 's/.(.epub)$/\1/g'
私はコードを説明するつもりです。最初に、フォルダ内のすべてのepubファイルを一覧表示してから、ブックのタイトルとブックの著者とを一致させてスワップし、最終的にブックのタイトルの最後にある_を削除します。 これはほぼすべての状況で機能しますが、書籍のタイトルには - が含まれていると、これは機能しません。この文字の代わりに部分文字列_-をどのように一致させることができますか?私はそれが私の問題を解決するだろうと思う。