使用unix重命名保留任意数字

时间:2016-03-10 15:42:01

标签: regex linux

我在重命名一组以{% code %} def sum(a, b): return a + b {% end %} <body> <b>Sum:</b> {{ sum(10, 20) }} </body> 问号结尾的文件方面遇到了问题。

我的文件如下:

?

我不知道该问号的含义,但使用重命名删除最后一个字符,它不起作用。

我将如何做这样的事情:

eufk_B737?
.
.
.

示例输入:

...... -a.k.a 6 arbitrary characters +
digit of arbitrary length? (to get rid of the ? mark)

示例输出:

4lg9_A125?

明智吗?代表不可读的字符而不是?

感谢。

2 个答案:

答案 0 :(得分:0)

for file in *; do mv -v $file $(echo $file | sed -e 's/[^A-Za-z0-9._-]//g'); done

答案 1 :(得分:0)

您可以使用find命令查找相应的文件,然后对每个文件执行mv命令:

find . -maxdepth 1 -name "*\?" -exec sh -c "echo {} | sed 's/\?$//' | xargs mv {}" \;

工作原理:

find . -maxdepth 1 -name "*\?" - 查找仅在当前目录中结尾的所有文件(非递归)

-exec sh -c "..." - 对于每个文件,执行相应的代码

echo {} | sed 's/\?$//' | xargs mv {} - 从文件末尾删除?并重命名旧文件({}