OS X (Unix、Linux):查找名称中带有空格的文件,复制并重命名它们,然后将它们移动到单独的文件夹中

OS X (Unix、Linux):查找名称中带有空格的文件,复制并重命名它们,然后将它们移动到单独的文件夹中

Google Music Beta 不会上传实际文件名中有空格的 mp3。我想要一个脚本,它可以找到文件名中所有有空格的 mp3,然后复制它们、重命名它们(只需删除空格或用下划线替换),并将它们放在一个新目录中,这样它就不会搞乱我的 iTunes 库。提前谢谢!另外,我正在运行 OS X。

答案1

我不记得 OS X 上是否默认安装了 Perl,但如果你有,你可以使用这个脚本清理文件名。现在,它会删除括号和撇号,并将所有内容转换为小写。您可以添加以下行

$ARGV[$argnum] =~ s/ //g;

删除空格,或

$ARGV[$argnum] =~ s/ /_/g;

将空格转换为下划线。

将脚本保存到您的 MP3 目录,然后从命令行调用以下命令:

./cleanmp3.pl *.mp3

答案2

$ ls 
IAmAFile.mp3  I am a file with spaces in my name.mp3  IAmAnotherFile.mp3  I am another file with spaces in my name.mp3

在 for 循环中重命名它们......

$ for file in *mp3; do mv -i "$file" `echo "$file" | sed 's/ /_/g'`; done
mv: `IAmAFile.mp3' and `IAmAFile.mp3' are the same file
mv: `IAmAnotherFile.mp3' and `IAmAnotherFile.mp3' are the same file

... 结果是:

$ ls
IAmAFile.mp3  I_am_a_file_with_spaces_in_my_name.mp3  IAmAnotherFile.mp3  I_am_another_file_with_spaces_in_my_name.mp3

这适用于当前工作目录中的所有文件。这有点丑陋,因为 mv 对所有不符合要求的文件都会报错不是包含空格,但它确实完成了它的工作。-i如果下划线版本已经存在,该标志会使 mv 在覆盖现有版本之前提示。

相关内容