所以我有一个作业问题,要求我在一个目录中搜索所有 .mp3 文件,这些文件的命名约定类似于:
Beatles - Lucy in the Sky with Diamonds.mp3
然后,我需要将其置于类似于以下的格式:
Beatles/Lucy in the Sky with Diamonds.mp3
我对 UNIX 很陌生,但我对基本概念有很好的掌握。
我知道如何“剥离”文件名的扩展名(所以“披头士乐队 - 带钻石的天空中的露西”会留下)。
我也知道如何搜索目录中的所有文件。
但是,我不熟悉如何搜索“-”。
我知道在 C++ 等中我可以搜索特定的 char ("-") 并获取该 int 并创建子字符串,但我不知道 UNIX 中的任何此类函数。
我不是在寻找完整的代码来完全回答这个问题,但我想知道如何搜索字符和编辑文件名。
谢谢。
编辑:
使用 nosid 所说的,我设法让文件名在艺术家和歌曲标题之间分开,如下所示:
artist="${originalFile%% - *}"
song="${originalFile#* - }"
因此该部分可以工作并将它们分开,但是当我尝试移动文件时会出现一个新问题。我有 2 个 if 语句来检测目录是否存在,如果不存在,它将创建该目录。但是,如果我使用艺术家变量作为目录名称,它将创建 2 个目录。使用歌曲也是如此。
所以本质上,当我尝试类似于此的 mkdir 或 mv 时,我怎样才能拥有它以便在文件/目录名称中忽略空格:
mkdir ${artist};
mv ${artist}/${song};