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/-/"

任何线索为什么它不起作用?

4

2 回答 2

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。

于 2012-07-03T10:37:18.870 回答
0

使用prename您系统上可能拥有的命令。它可能被称为rename,但有另一个同名的程序以不同的方式工作。

prename 's/[^a-zA-Z0-9]/-/' Argi*
于 2012-07-03T11:12:26.057 回答