如何重命名一组文件,其名称类似于Windows文件路径


9

我有一堆文件名混乱的文件。所有文件名都有相同的开头,似乎是Windows文件目录。问题是有700多个文件,我真的不想浏览并手动重命名所有文件。这些是文件名的示例(注意:这些文件都没有文件目录):

G:some\really\long\file\path\then\the\name1.jpg
G:some\really\long\file\path\then\the\name2.png
G:some\really\long\file\path\then\the\filename.txt
G:some\really\long\file\path\then\the\file_name.mov
...

重要的一点是,每个文件都G:some\really\long\file\path\then\the\在我想要的文件名之前。

所以我希望以上文件看起来像:

name1.jpg
name2.png
filename.txt
file_name.mov

我已经尝试过该rename命令,但未成功。我对Linux还是很陌生,真的不确定如何使用它或对谷歌了解什么。任何帮助,将不胜感激。

Answers:


18

我只是删除了直到最后一个反斜杠的所有内容 rename

$ rename -n 's/.*\\//' G*
rename(G:some\really\long\file\path\then\the\file_name.mov, file_name.mov)
rename(G:some\really\long\file\path\then\the\filename.txt, filename.txt)
rename(G:some\really\long\file\path\then\the\name1.jpg, name1.jpg)
rename(G:some\really\long\file\path\then\the\name2.png, name2.png)

-n经过测试后删除以实际重命名文件。

笔记

  • -n 什么都不做,只打印将要更改的内容
  • s/old/new替换oldnew
  • .* 任何数量的任何字符
  • \\ 第一个反斜杠是为了逃避第二个反斜杠。
  • 由于正则表达式贪婪,因此此表达式也将.*\\所有前面的反斜杠也吃掉。
  • 由于最后两个定界符//为空,因此删除了搜索部分中匹配的所有内容

我只需要第一行,还是每个文件都需要这样做?
kingcobra1986 '17

您只需要第一行@ kingcobra1986,其他只是输出。*匹配所有文件,但让我将其更改为G*-完成-现在,它匹配G当前目录中以开头的所有文件,并将立即对它们进行处理。如果它们在多个目录中,我们也可以通过各种方式来处理
Zanna

那行得通。您能解释一下该行中到底发生了什么吗?
kingcobra1986 '17

1
@ kingcobra1986对不起,我添加了笔记。希望清楚,如果没有,请随时要求更多!
Zanna

哈,我喜欢使用.*\\ 贪婪以来的想法.*
Ziazis'Aug

10

您可以纯粹bash使用shell参数扩展来执行此操作。

${file##*\\}(cut-to-last-prefix)剥离从文件名的开头到最后\看到的所有内容。

for file in *; do
    mv -v "$file" "${file##*\\}";
done

重命名结果为:

‘G:some\\really\\long\\file\\path\\then\\the\\file_name.mov’ -> ‘file_name.mov’
‘G:some\\really\\long\\file\\path\\then\\the\\filename.txt’ -> ‘filename.txt’
‘G:some\\really\\long\\file\\path\\then\\the\\name1.jpg’ -> ‘name1.jpg’
‘G:some\\really\\long\\file\\path\\then\\the\\name2.png’ -> ‘name2.png’

6

如果您正在寻找GUI解决方案,则有许多批量重命名应用程序。我建议Thunar,它是Xfce的默认文件管理器。它带有一个方便的批量重命名工具。您可以通过在终端中运行以下命令来安装Thunar:

sudo apt-get install thunar

您可能也可以从Ubuntu Software安装。

如何使用实用程序

  1. 安装Thunar后,启动Bulk Rename实用程序。
  2. 单击+图标,然后添加要重命名的文件。
  3. 点击所选文件列表下方的下拉框,然后选择搜索和替换
  4. 在“ 搜索:”框中,输入G:some\really\long\file\path\then\the\(要删除的部分),将“ 替换为:”框保留为空。您应该在“ 新名称”列中看到更改的预览。
  5. 要应用更改,请单击“ 重命名文件”按钮。

搜索和替换外,该实用程序还支持以下操作:

  • 插入日期/时间
  • 插入/覆盖
  • 编号
  • 删除字符
  • 大写小写

鹦鹉螺没有一个(我想有!)?建议为此安装新的文件浏览器似乎有些矫kill过正。
Zanna

@Zanna v3.22中有一个,但是我认为在Ubuntu仓库中仍然不可用。
pomsky

2
Thunar非常方便,并且似乎可以与其他文件浏览器共存,因此我认为为此目的安装它可能是值得的。但是,您可以通过解释如何在Thunar中进行批量重命名来扩展此答案吗?
伊莱亚·卡根

1
@EliahKagan而且它也很轻巧
pomsky

做得好,现在我可以投票了(我也可以测试它:))
Zanna
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.