如何从多个文件的文件名中删除重复出现的 word/character 以及后面的内容?
How to remove a reoccuring word/character and what comes after, from the filenames of multiple files?
我有几个视频文件文件夹,由于我使用的下载管理器,它们都按以下格式命名 "FILENAME.mp4; filename= FILENAME.mp4"我一直试图做的就是删除所有内容(和包括)“.mp4;文件名”。但是,我还没有找到办法做到这一点。
我已经尝试了一些免费软件(例如 Renamer、Namechanger、Name Munger for Mac、Transnomino),但我没有做我需要做的事情。
我正在 Mac OSX 10.13.6.
如能就此问题提供任何帮助,我们将不胜感激。
我过去经常使用名为 Renamer 6.0 的 windows 重命名工具,它有一个名为 "Multi change" 的 "pattern rename" 工具可以处理这个问题。
在该工具的上下文中,它会要求一个源模式,如 %a= %b
和一个目标模式(如 %b
),=
之后的所有内容都将存储在%b 变量,然后将文件重命名为 %b 会在 =
之后丢失所有内容
看看您喜欢的重命名工具是否有类似的功能?
如果您的工具支持正则表达式,则找到:.*?=(.*)
并替换为 </code> </p>
<p>我还想在 <a href="https://unix.stackexchange.com/">https://unix.stackexchange.com/</a> 上问这个问题可能会帮助制作一个 shell 脚本来执行这个重命名(尽管这里也有很多 shell 有能力的人,他们中的一个可能会看到它 - 只是它不像大多数问题那样硬核 programmer-y )。 </p>
<p>如果您愿意 learn/use java,那么这可能是解决问题的另一种好方法。它(猜测)看起来像这样:</p>
<pre><code> for (final File f : new File("C:\temp").listFiles()) {
if (f.isFile()) {
string n = f.getName();
if (n.contains("=")) {
f.renameTo(new File(n.substring(n.indexOf("=")+1));
}
}
}
您可以使用终端实现。使用此 cd
命令转到要重命名文件的文件夹,例如:
cd ~/Documents/Videos
和运行这个递归重命名所有文件的命令:
find . -iname "*.mp4;*" | sed -E 's/(\.[^\.]*)(\.mp4)(.*)/mv "" ""/' | sh
此命令将仅保留 FILENAME.mp4; filename= FILENAME.mp4
文件名的 FILENAME.mp4
部分
我有几个视频文件文件夹,由于我使用的下载管理器,它们都按以下格式命名 "FILENAME.mp4; filename= FILENAME.mp4"我一直试图做的就是删除所有内容(和包括)“.mp4;文件名”。但是,我还没有找到办法做到这一点。
我已经尝试了一些免费软件(例如 Renamer、Namechanger、Name Munger for Mac、Transnomino),但我没有做我需要做的事情。
我正在 Mac OSX 10.13.6.
如能就此问题提供任何帮助,我们将不胜感激。
我过去经常使用名为 Renamer 6.0 的 windows 重命名工具,它有一个名为 "Multi change" 的 "pattern rename" 工具可以处理这个问题。
在该工具的上下文中,它会要求一个源模式,如 %a= %b
和一个目标模式(如 %b
),=
之后的所有内容都将存储在%b 变量,然后将文件重命名为 %b 会在 =
看看您喜欢的重命名工具是否有类似的功能?
如果您的工具支持正则表达式,则找到:.*?=(.*)
并替换为 </code> </p>
<p>我还想在 <a href="https://unix.stackexchange.com/">https://unix.stackexchange.com/</a> 上问这个问题可能会帮助制作一个 shell 脚本来执行这个重命名(尽管这里也有很多 shell 有能力的人,他们中的一个可能会看到它 - 只是它不像大多数问题那样硬核 programmer-y )。 </p>
<p>如果您愿意 learn/use java,那么这可能是解决问题的另一种好方法。它(猜测)看起来像这样:</p>
<pre><code> for (final File f : new File("C:\temp").listFiles()) {
if (f.isFile()) {
string n = f.getName();
if (n.contains("=")) {
f.renameTo(new File(n.substring(n.indexOf("=")+1));
}
}
}
您可以使用终端实现。使用此 cd
命令转到要重命名文件的文件夹,例如:
cd ~/Documents/Videos
和运行这个递归重命名所有文件的命令:
find . -iname "*.mp4;*" | sed -E 's/(\.[^\.]*)(\.mp4)(.*)/mv "" ""/' | sh
此命令将仅保留 FILENAME.mp4; filename= FILENAME.mp4
文件名的 FILENAME.mp4
部分