bash - 从文件开头剪切字符串并附加到 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 行。如果单线也能做到这一点,我也将不胜感激。
解决方案
$ echo 123456abcdefg12345678 > 1.txt
$ tail -c +7 1.txt > 1_$(head -c +6 1.txt).txt ; rm 1.txt .
$ cat 1_123456.txt
abcdefg12345678
推荐阅读
- c# - 使用 group 和 orderby 计算排名的 Linq
- arrays - 如何正确分配内存给双指针?
- logstash - 使用 Logstash 和 Xpath 提取 XML 数据
- arrays - 如何遍历数组并获取匹配数?
- oracle - 特定日期的 Oracle 随机时间戳
- python - 如何从 numpy 二维数组中提取一系列值?
- apache-kafka - autoCommit 的工作原理以及在 spring-cloud-stream 反应式 kafka 中将轮询多少条消息?
- javascript - 从服务器获取完整的字符串,当分配给 JS 中的变量时,它是不完整的
- php - 是否可以在其他用户中创建谷歌日历事件而不是添加与会者
- java - BeforeLinkSaveEvent 和 BeforeSaveEvent