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

标签 regex linux

<分区>

我在重命名一组以 ? 问号结尾的文件时遇到了问题。

我的文件看起来像:

eufk_B737?
.
.
.

我不知道那个问号是什么意思,但是使用重命名删除最后一个字符,它不起作用。

我该怎么做:

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

示例输入:

4lg9_A125?

示例输出:

4lg9_A125

介意吗?表示可读性较差的字符而不是 ?

谢谢。

最佳答案

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

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

工作原理:

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

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

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

关于regex - 使用 unix 重命名来保留任意数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35920997/

相关文章:

php - 如何在 PHP 中将逗号和 "and"与 preg_split 匹配

Ruby:扫描字符串以匹配相邻的元音组

linux - sed 正在匹配传递的变量子集,而不是完全匹配

c++ - shell 在 Ubuntu 上实用地运行 addr2line 时的错误消息

ios - iOS如何在一个巨大的字符串的2个字符串之间找到多个字符串?

java - 需要一个正则表达式来使用java提取字符串的一部分

linux - 使用 putty -m 选项给出 'command not found'

linux - 如何限制 mongodump 的 CPU 和 RAM 资源?

regex - 在字符上拆分字符串向量以返回矩阵

linux - 默认情况下,zipcloak 将临时文件放在哪里?