首页 > 解决方案 > 从文件开头剪切字符串并附加到 Bash 中的文件名

问题描述

我想从文件的开头剪切一定长度的字符串并将其附加到我的文件名中。是否有一个可以为整个文件目录执行此操作的单行程序?

例如,我有文件 1.txt,其内容如下:

123456abcdefg12345678...

我想将文件重命名为 1_123456.txt,并将内容编辑为:

abcdefg12345678....

我创建了一个 bash 脚本来解决这个问题,如下所示:

for f in ./*; do
  a = $(head -c 8 $f)
  cut -c 9- > $f
  mv {,$a_}$f
done

但这并没有做它应该做的事情——问题似乎出在 mv 行。如果单线也能做到这一点,我也将不胜感激。

标签: bash

解决方案


$ echo 123456abcdefg12345678 > 1.txt
$ tail -c +7 1.txt > 1_$(head -c +6 1.txt).txt ; rm 1.txt . 
$ cat 1_123456.txt 
abcdefg12345678

推荐阅读