使用正则表达式重命名一组文件的最佳方法是什么?

发布于 2024-12-27 01:19:47 字数 226 浏览 1 评论 0原文

我有一个充满文件名的目录:“file1.mp4.mp4 file1.mp4.mp4 file1.mp4.mp4 ...”。

我想使用 find 将它们全部重命名为“file1.mp4.mp4”到“file1.mp4”以及其他一些 bash 工具,它看起来像这样,但带有正则表达式:

找到 . -name "*.mp4" |xargs echo -0

I have a directory full of files name: "file1.mp4.mp4 file1.mp4.mp4 file1.mp4.mp4 ...".

I would like to rename all of them using find from "file1.mp4.mp4" to "file1.mp4" and some other bash tools it would look something like this but with a regular expression:

find . -name "*.mp4" |xargs echo -0

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

你曾走过我的故事 2025-01-03 01:19:47

或者循环尝试这个简单的 bash 命令?

mv /path/to/file.{mp4.mp4, mp4}

Or try this simple bash command in a loop?

mv /path/to/file.{mp4.mp4, mp4}
不如归去 2025-01-03 01:19:47

使用重命名。如果所有文件都在同一目录中,您可以执行以下操作:

rename 's/\.mp4.mp4$/.mp4/' *.mp4.mp4

否则您可能需要类似的内容:

rename 's/\.mp4.mp4$/.mp4/' `find . -name "*.mp4.mp4"`

另外,要查看运行 rename 时会发生什么,只是为了调试该语句,请执行以下操作:

rename --no-act 's/\.mp4.mp4$/.mp4/' *.mp4.mp4

如果文件名包含空格,这甚至可以工作,例如:

$ touch foo.mp4.mp4
$ touch "bar baz.mp4.mp4"
$ ls
bar baz.mp4.mp4  foo.mp4.mp4
$ rename  's/\.mp4.mp4$/.mp4/' *.mp4.mp4
$ ls
bar baz.mp4  foo.mp4
$ 

Use rename. If all the files are in the same directory, you can do this:

rename 's/\.mp4.mp4$/.mp4/' *.mp4.mp4

Otherwise you might want something like:

rename 's/\.mp4.mp4$/.mp4/' `find . -name "*.mp4.mp4"`

Also, to see what would happen when you run rename, just to debug the statement, do this:

rename --no-act 's/\.mp4.mp4$/.mp4/' *.mp4.mp4

This even works if the filename contains a space, for example:

$ touch foo.mp4.mp4
$ touch "bar baz.mp4.mp4"
$ ls
bar baz.mp4.mp4  foo.mp4.mp4
$ rename  's/\.mp4.mp4$/.mp4/' *.mp4.mp4
$ ls
bar baz.mp4  foo.mp4
$ 
为人所爱 2025-01-03 01:19:47

尝试这样的事情 -

for file in /path/to/dir/*.mp4; do 
    mv "$file" "${file%.*}"; 
done

Try something like this -

for file in /path/to/dir/*.mp4; do 
    mv "$file" "${file%.*}"; 
done
谜兔 2025-01-03 01:19:47

您有 rename 命令吗?如果是这样,您可以尝试:

rename .mp4 "" *.mp4.mp4

这将从当前目录中扩展名为 .mp4.mp4 的所有文件中删除最后的 .mp4 后缀。

Do you have the rename command? If so, you can try:

rename .mp4 "" *.mp4.mp4

This will remove the final .mp4 suffix from all files with extension .mp4.mp4 in the current directory.

尸血腥色 2025-01-03 01:19:47
find . -name '*.mp4.mp4' -exec echo mv {} \`dirname {}/\`/\`basename {} .mp4\` \; > mp4.sh && ./mp4.sh && rm mp4.sh
find . -name '*.mp4.mp4' -exec echo mv {} \`dirname {}/\`/\`basename {} .mp4\` \; > mp4.sh && ./mp4.sh && rm mp4.sh
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文