我们要替换脚本文件扩展名
因此我们执行了以下操作:
new_name=` echo run_fix.bash | sed 's/[.].*$//' `
new_file_extension=".in_hold.txt"
new_name=$new_name$new_file_extension
echo $new_name
run_fix.in_hold.txt
但我觉得我的方法不是那么优雅
注意-因为脚本扩展名可以是bash或perl或python,并且目标扩展名也可以是“。”之后的任何内容。我们想要全球替换
我正在使用redhat 7.2
old_name=run_fix.bash
new_name=${old_name%.bash}.in_hold.txt
printf 'New name: %s\n' "$new_name"
这将从.bash
值的名称中删除文件名后缀,$old_name
并将其添加.in_hold.txt
到结果中。整个事情将被分配给变量new_name
。
膨胀${variable%pattern}
以除去最短后缀字符串匹配的图案pattern
从所述值$variable
是一个标准的参数扩展。
要替换任何文件名后缀(即文件名中最后一个点之后的任何内容):
new_name=${old_name%.*}.new_suffix
该.*
模式将匹配后的最后一个点,任何事情(这将被删除)。如果使用%%
代替%
,则将删除与模式匹配的最长子字符串(在这种情况下,您将删除字符串中第一个点之后的所有内容)。如果字符串不包含任何点,它将保持不变。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句