regex - 重命名 linux 目录中文件的最佳过程

标签 regex linux file-rename

这个问题与重命名 Linux 系统目录中的文件有关,其中受影响的文件以这种通用格式出现:

index.html?p=155
index.html?page_id=10
index.html?author=2&paged=5
index.html?feed=rss2&tag=search-engine
index.html?tag=social-media

可能有一个 shell 级别的“重命名”命令,我可以使用它来将目录中每个文件中的问号 (?) 替换为下划线 (_)?

提前感谢您提供任何建议或信息!

最佳答案

我更喜欢 rename命令自己,尽管有时自己动手做 for循环可以更有针对性。

注意:重命名需要一个表达式作为更改的参数,文件名作为最后一个参数。正确的使用调用是:

rename 's/\?/_/' index*

因为 ? 在未被 \ 转义时表示前面字符的 0 或 1。

这也更容易投入到可以递归操作的 find 命令中,等等:

find . -name index.html* -exec rename 's/\?/_/' {} +

关于regex - 重命名 linux 目录中文件的最佳过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17538304/

相关文章:

regex - 如何使用正则表达式匹配两个整数大于零的字符串?

python - 正则表达式提取未知数字格式的负数

c++ - 如何从用户空间设置hostapd的 "channel"和 "hw_mode"(c++应用程序)

linux - 在 Qemu 中重定向多个 UART

linux - 如何重命名共享库以避免同名冲突?

bash - 使用 sed 将文件名中的数值填充为三位数

javascript - 有条件地去除 HTML 标记内容的正则表达式

mysql - 查找字符串 mySQL 中匹配表达式的数量

ruby-on-rails - 通过 CLI 的 rails 不工作

git - 在 Git 中更改文件名的大小写