我有一些我想删除的带有非 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/-/"
任何线索为什么它不起作用?
你想要什么
在文件名中用“-”替换这些字符
我猜您只是想获得没有这些字符的输出,而不是重命名原始文件。因为您的 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。