【问题标题】:Regular expression: extract and move a pattern within a string正则表达式:提取和移动字符串中的模式
【发布时间】:2013-05-27 14:05:51
【问题描述】:

我正在尝试查看是否可以使用正则表达式来重命名目录中的一长串文件。

即当前文件名的格式如下:

filename_[2013_05_30].mp4

我想将其重命名为以下格式:

[2013_05_30]_filename.mp4

我使用的是 Linux (Ubuntu),可以使用 shell 脚本或 php。

谢谢!

【问题讨论】:

  • what have you tried? 它们是否总是 4 位数的年份、2 位数的月份和2 位数的日期?另外,更重要的是,您使用的是什么语言?用适当的语言标记您的问题。
  • 使用PHP,你可以先用句点分割,然后用下划线分割第一个元素,反转,然后重新加入所有部分。

标签: php regex shell


【解决方案1】:

之前备份您的文件。

用这一行测试:

ls *].mp4 | sed 's/^\(.*\)_\(\[[0-9_]*]\)\.mp4$/mv & \2_\1.mp4/'

如果您确定,请添加| sh

ls *].mp4 | sed 's/^\(.*\)_\(\[[0-9_]*]\)\.mp4$/mv & \2_\1.mp4/' | sh

【讨论】:

  • 谢谢。通过你的回复,我有了一个更好的主意。我使用 (.*)_([\d+_\d+_\d+]).mp4 作为搜索模式,然后使用 $2_$1.mp4 作为替换模式。
【解决方案2】:

您可以通过以下几种不同的方式在 unix stackexchange 的 linux shell 脚本(包括正则表达式)中完成文件重命名: https://unix.stackexchange.com/questions/7161/copy-rename-multiple-files-using-regular-expression-shell-script

我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多