将文件名中的最后11个字符输出到文本文件

时间:2016-05-21 06:09:29

标签: bash shell sed permutation

  • 有一个目录,其中包含以.mp3结尾的文件名,并且其中包含我想要输入文本文件的代码。

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

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

2 个答案:

答案 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