linux - 在Linux中删除文件夹中所有文件的文件名的特定部分(第二个破折号之后的内容)

标签 linux bash media file-rename batch-rename

我使用命令行实用程序 youtube-dl 从 YouTube 下载视频,并使用 avconv 将视频制作为 mp3。我在 Ubuntu 14.04 下做这个并且非常满意。

该实用程序下载文件并使用以下命名方案保存它们:

TITLE(artist-track)-ID.mp3

所以实际的文件名看起来像EPIC RAP BATTLE of MANLINESS-_EzDRpkfaO4.mp3

文件夹中的一些其他文件名如下所示:

EPIC RAP BATTLE of MANLINESS-_EzDRpkfaO4.mp3
Martin Garrix - Animals (Official Video)-gCYcHz2k5x0.mp3
Stromae - Papaoutai-oiKj0Z_Xnjc.mp3

起初,这没有问题。当我在 Rhythmbox 中听音乐时,它并没有打扰我。 但是,当转移到手机或其他设备时,看到这么长的名称会很令人困惑,有些播放器(例如三星的播放器)将名称的最后部分(第二个破折号后的 id)视为专辑或其他内容。

所以我想创建一个 Bash 脚本,删除所有文件名称中第二个破折号后面的内容,即转换名称

‎Martin Garrix - Animals (Official Video)-gCYcHz2k5x0.mp3

名字

Martin Garrix - Animals (Official Video).mp3.

我认为可以编写这样一个 Bash 文件来通过某种循环和 sedgrep 和 mv 来完成此操作。

此外,是否可以指示 youtube-dl 从现在开始排除该 ID? 我目前正在使用命令下载

youtube-dl --extract-audio --audio-quality 0 --audio-format mp3 URL

最佳答案

使用 bash 脚本:

#!/bin/bash
shopt -s extglob
for A in *.mp3; do
   B=${A/%-+([[:alnum:]_]).mp3/.mp3}
   [[ $A != "$B" ]] && mv "$A" "$B"
done

这将修复已下载文件的文件名。

关于linux - 在Linux中删除文件夹中所有文件的文件名的特定部分(第二个破折号之后的内容),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24165168/

相关文章:

linux - 如何在shell脚本中获取单行数据

linux -/proc/meminfo 中的 Inactive(file) 和 Active(file) 是什么?

Bash:嵌套变量扩展

css - @media only 屏幕不工作

css - 为媒体查询调整幻灯片大小

linux - 如何使用 yocto 获取 32 位和 64 位的 initramfs 库

linux - 在 osx 升级后获取 bash_profile 后,所有 bash 命令都丢失了

linux - 如何查找文件中的选项卡数?

php - Laravel Symfony/控制台,由于 "Invalid argument"安装失败?

jquery - 使用 MVC 方法无法正确加载 jPlayer 歌曲