sed - 删除破折号前的所有字符

scr*_*bie 4 bash awk sed

我有一个文件名列表,我想在第一个实例之前删除所有字符-。因此,Before: 列表中的以下名称显示为 After: 列表中的名称。

Before:
Adam James - Welcome Home.txt
Mike & Harry - One Upon - A Time.txt
William-Kent - Prince & The Frog.txt

After:
Welcome Home.txt
One Upon - A Time.txt
Prince & The Frog.txt
Run Code Online (Sandbox Code Playgroud)

我一直在玩 sed 几个小时但无济于事。

我发现sed 's/ - .*//'在第一个实例之后删除了所有字符,-但我之前找不到相同的字符。

Ed *_*ton 5

$ awk '{print substr($0,index($0," - ")+3)}' file
Welcome Home.txt
One Upon - A Time.txt
Prince & The Frog.txt
Run Code Online (Sandbox Code Playgroud)

即只是从第一次出现的“-”的末尾打印到行的末尾。