Linux 更改从变量接收的文件扩展名
我有一个变量:Linux 更改从变量接收的文件扩展名,linux,bash,shell,unix,Linux,Bash,Shell,Unix,我有一个变量: input_file = file.csv 我想将此文件的扩展名从file.csv更改为file.old 我在考虑类似于mv$input\u file basename$input\u file的东西。旧的但我真的不知道怎么做 filename="${input_file%.*}" mv $input_file $filename.old 这应该能帮你分类 这里提到了如何提取文件名和扩展名: 以下脚本应根据您的要求运行。如果使用的basename没有后缀(.csv),则返回扩
input_file = file.csv
我想将此文件的扩展名从file.csv更改为file.old
我在考虑类似于mv$input\u file basename$input\u file的东西。旧的
但我真的不知道怎么做
filename="${input_file%.*}"
mv $input_file $filename.old
这应该能帮你分类
这里提到了如何提取文件名和扩展名:
以下脚本应根据您的要求运行。如果使用的
basename
没有后缀(.csv),则返回扩展名为的文件名。另外,不要在变量声明及其值之间使用空格
#/bin/bash
input_file=file.csv
filename="$(basename $input_file .csv)"
mv "$input_file" "$filename.old"
下面是basename命令的用法,供您参考
Usage: basename NAME [SUFFIX]
or: basename OPTION... NAME...
Print NAME with any leading directory components removed.
If specified, also remove a trailing SUFFIX.
Mandatory arguments to long options are mandatory for short options too.
-a, --multiple support multiple arguments and treat each as a NAME
-s, --suffix=SUFFIX remove a trailing SUFFIX; implies -a
-z, --zero end each output line with NUL, not newline
--help display this help and exit
--version output version information and exit
Examples:
basename /usr/bin/sort -> "sort"
basename include/stdio.h .h -> "stdio"
basename -s .h include/stdio.h -> "stdio"
basename -a any/str1 any/str2 -> "str1" followed by "str2"
尝试
mv$input\u文件${input\u文件%.*}。旧的