【发布时间】:2019-12-08 05:28:32
【问题描述】:
我有几个文件需要从文件扩展名中提取并删除每个文件末尾的数字
test1.alarms
abcd1.alarms
test2.alarms
abcd2.alarms
下面是我使用的代码。第一部分工作删除了文件扩展名并重新插入到文件中,但是,我无法删除每个文件的编号。获得结果后,我会将其重新插入文件中。
for f in *.alarms; do
base=$(basename "$f" '.alarms')
sed --i "s/^/$base\:/" $f
db_name=`echo $base | grep -o [a-z]`
sed -ie "s/^/$db_name\:/" -i $f
done
结果应该是
test
abcd
test
abcd
【问题讨论】:
-
remove the number at the end of each file- 你想mv文件吗?现在你的脚本试图操纵文件的内容,而不是文件名,不知道,这是故意的吗? -
db_name=$(echo $f | sed 's/[0-9]\.alarms$//')怎么样? -
点没有特殊意义。如果您想删除
[0-9].alarm,那么,就这样做吧。basename不能单独完成,但副本显示了如何进行各种模式替换(然后你根本不需要basename)。
标签: bash