Shell 如何从目录中的文件名中删除数字前缀?
我的目录里有一些mp3文件。它们的格式如下Shell 如何从目录中的文件名中删除数字前缀?,shell,Shell,我的目录里有一些mp3文件。它们的格式如下 9989923_songname.mp3 歌曲名012.mp3 898887888.mp3 songname.mp3 4_songname.mp3 我需要编写一个shell脚本,将“Audio”目录中的文件重命名为以下格式 9989923_songname.mp3->songname.mp3 songname012.mp3->songname1.mp3(如果存在许多同名文件,则为一系列) 898887888.mp3->unknown1.mp3(如果
请帮我写这个脚本。(如果您能解释解决方案,我将不胜感激)在这里,我创建了一个方法,该方法将以目录名作为第一个参数,并从文件名中删除字符串 private static void RemovePrefixRecursively(string dirName, string prefix) { DirectoryInfo dirInfo = new DirectoryInfo(dirName); foreach (var file in dirInfo.GetFiles()) { var fileName = file.Name; var fileExtention = file.Extension.TrimStart('.'); fileName = fileName.Replace("." , string.Empty); if(!string.IsNullOrEmpty(fileExtention)) fileName = fileName.Replace(fileExtention, string.Empty); System.IO.File.Move(file.FullName, string.Format("{0}\\{1}.{2}", dirName, fileName.Replace(prefix, string.Empty), fileExtention)); } foreach (var dir in dirInfo.GetDirectories()) { RemovePrefixRecursively(dir.FullName,prefix); } } 私有静态void RemovePrefixRecursive(字符串dirName,字符串前缀) { DirectoryInfo dirInfo=新的DirectoryInfo(dirName); foreach(dirInfo.GetFiles()中的var文件) { var fileName=file.Name; var fileextension=file.Extension.TrimStart('.'); fileName=fileName.Replace(“.”,string.Empty); 如果(!string.IsNullOrEmpty(fileExtension))fileName=fileName.Replace(fileExtension,string.Empty); System.IO.File.Move(File.FullName,string.Format(“{0}\\\{1}.{2}”,dirName,fileName.Replace(前缀,string.Empty),fileextension)); } foreach(dirInfo.GetDirectories()中的var dir) { 递归移除前缀(dir.FullName,prefix); } }
请帮我写这个脚本。:这不是为我写的吗?这不是一个shell脚本。