我需要获取某个目录中某个文件的.mp3部分之前的最后11个字符并将其输入到文本文件中(在mac osx上使用bash)
我如何做到这一点?用sed?
答案 0 :(得分:3)
如果我理解正确,你会得到一个名称为" abcdefghijklmnopqrstuvwxyz.mp3"的文件列表。并想要提取" pqrstuvwxyz"。您可以直接在bash中执行此操作,而无需调用任何花哨的sed
业务:
for F in *.mp3; do STRIP=${F/.mp3}; echo ${STRIP: -11}; done > list.txt
第一个STRIP
变量是删除了F
扩展名的每个文件.mp3
的名称。然后你回显最后11个字符并保存到文件中。
关于bash替换here的页面很不错。 sed
很棒,但我个人觉得这些简单的案例有点过分。
答案 1 :(得分:1)
除了上述答案之外,还可以通过awk
完成for f in `ls *.mp3`;
echo $f|awk -F. '{printf substr($1,length($1)-11,length($1)),$2;}'
done