首页 文章

管道sed没有替代

提问于
浏览
0

我有一些非ascii被追逐的文件,我想删除 . 我试图用文件名中的' - '替换那些字符,但它不起作用 .

这是我的命令

ls Argi* | xargs -I file basename file '.eps' | sed "s/[^a-zA-Z0-9]/-/"

还尝试过:

ls Argi* | xargs -I file basename file '.eps' | sed "s/\W/-/"

任何线索为什么不工作?

2 回答

  • 0

    使用您系统上可能具有的prename命令 . 它可能被称为 rename ,但该名称的another program的工作方式不同 .

    prename 's/[^a-zA-Z0-9]/-/' Argi*
    
  • 3

    你想要什么

    在文件名中用' - '替换这些字符

    我想你只想获得没有这些字符的输出而不是重命名原始文件 . 因为你的sed命令根本没有重命名 .

    然后你可以试试iconv:

    kent$  l
    -rw-r--r-- 1 kent kent  0 2012-07-03 12:20 Argiö.eps
    -rw-r--r-- 1 kent kent  0 2012-07-03 12:20 Argiü.eps
    
    
    kent$  ls Argi*|iconv -f utf8 -t ascii//TRANSLIT 
    Argio.eps
    Argiu.eps
    

    这不会用“ - ”代替那些字母,而是用ASCII代替 .

相关问题