Bash 将文件名中的最后11个字符导入文本文件 有一个目录,里面有以.mp3结尾的文件名,还有一个代码,我想通过管道将其导入文本文件。

Bash 将文件名中的最后11个字符导入文本文件 有一个目录,里面有以.mp3结尾的文件名,还有一个代码,我想通过管道将其导入文本文件。,bash,shell,sed,permutation,Bash,Shell,Sed,Permutation,我需要在某个目录中获取文件.mp3部分之前的最后11个字符,并使用mac osx上的bash将其导入文本文件 我如何做到这一点?使用sed?如果我理解正确,您有一个名为abcdefghijklmnopqrstuvwxyz.mp3的文件列表,并希望提取pqrstuvwxyz。您可以在bash中直接执行此操作,而无需调用任何高级sed业务: 对于*.mp3中的F;do STRIP=${F/.mp3};echo${STRIP:-11};完成>列表.txt 第一个STRIP变量是删除扩展名为.mp3的每

我需要在某个目录中获取文件.mp3部分之前的最后11个字符,并使用mac osx上的bash将其导入文本文件


我如何做到这一点?使用sed?

如果我理解正确,您有一个名为abcdefghijklmnopqrstuvwxyz.mp3的文件列表,并希望提取pqrstuvwxyz。您可以在bash中直接执行此操作,而无需调用任何高级sed业务:

对于*.mp3中的F;do STRIP=${F/.mp3};echo${STRIP:-11};完成>列表.txt

第一个STRIP变量是删除扩展名为.mp3的每个文件F的名称。然后回显最后11个字符并保存到文件中


关于bash替换有一个很好的页面。sed很好,但我个人认为对于这些简单的情况来说,它太过了。

如果我理解正确,您有一个文件列表,其名称类似于abcdefghijklmnopqrstuvwxyz.mp3,并且希望提取pqrstuvwxyz。您可以在bash中直接执行此操作,而无需调用任何高级sed业务:

对于*.mp3中的F;do STRIP=${F/.mp3};echo${STRIP:-11};完成>列表.txt

第一个STRIP变量是删除扩展名为.mp3的每个文件F的名称。然后回显最后11个字符并保存到文件中


关于bash替换有一个很好的页面。sed很好,但我个人认为对于这些简单的案例来说,它太过分了。

连同上面的答案,都可以通过awk完成

for f in `ls *.mp3`;
echo  $f|awk -F. '{printf substr($1,length($1)-11,length($1)),$2;}'
done

连同以上的答案,可以通过awk完成

for f in `ls *.mp3`;
echo  $f|awk -F. '{printf substr($1,length($1)-11,length($1)),$2;}'
done

它可以通过${mavar:-15:11}完成,值得一提的是,它来自bash4.2.Good call。我实际上是在玩,看看是否可以将它简化为一个替换,并避免临时变量。我不认为它能变得比这更直接!哇!你们真的很了解bash!:谢谢对于非导出变量名,不要使用所有大写字母,始终引用您的变量google是您的朋友。对于*.mp3中的f;do strip=${f/.mp3};echo${strip:-11};done>list.txit可以使用${mavar:-15:11}完成,值得一提的是,它来自bash4.2.Good call。我实际上是在玩,看看是否可以将它简化为一个替换,并避免临时变量。我不认为它能变得比这更直接!哇!你们真的很了解bash!:谢谢对于非导出变量名,不要使用所有大写字母,始终引用您的变量google是您的朋友。对于*.mp3中的f;do strip=${f/.mp3};echo${strip:-11};done>list.txtI没有重要的重复投票答案。我没有重要的重复投票答案。