2017-07-13 57 views
0

我想反轉文件名[email protected]的組件。文件名反轉字符串組件

這個sed命令做它的字符串:

$ echo [email protected] | sed 's/\<\([-_a-zA-Z0-9]*\)@\([-_a-zA-Z0-9]*\)\>/\[email protected]\1/' 
    [email protected] 

但傳遞模式rename(女士prename AKA perl的重命名)簡化版,導致文件被重命名(雖然退出狀態是0)

rename 's/\<\([-_a-zA-Z0-9]*\)@\([-_a-zA-Z0-9]*\)\>/\[email protected]\1/' [email protected] 

我做錯了什麼?

回答

1

sedperl具有非常不同的正則表達式語法和功能。這就是你可能會尋找

$ rename -n 's/\b([-_a-zA-Z0-9]*)\@([-_a-zA-Z0-9]*)\b/$2\@$1/' [email protected] 
rename([email protected], [email protected]) 
  • \b是單詞邊界
  • 捕獲組
  • $1$2在替換部分反向引用,不\1\2()不應該逃脫etc
  • @需要逃脫,因爲它是用於陣列
  • -n選項爲空運