Linux 从文件名中删除日期

Linux 从文件名中删除日期,linux,Linux,我正在开发一个接受linux命令的工具。 我有来自不同来源的文件,我想从文件中删除日期,并且工具支持“%F”,即仅支持绝对文件名 %F是/Dir1/Subdir/ABC\u 20190101\u PQR.csv 我想要的是/Dir1/Subdir/ABC_PQR.csv 请帮忙 我试过一些命令,但都不管用 我想要/Dir1/Subdir/ABC_PQR.csv mv %F {%F//_{0-9}//_{}} 这样行吗 echo ${text} | sed -r 's/(.*)(_[[:digi

我正在开发一个接受linux命令的工具。 我有来自不同来源的文件,我想从文件中删除日期,并且工具支持“%F”,即仅支持绝对文件名

%F是
/Dir1/Subdir/ABC\u 20190101\u PQR.csv

我想要的是
/Dir1/Subdir/ABC_PQR.csv

请帮忙

我试过一些命令,但都不管用

我想要/Dir1/Subdir/ABC_PQR.csv

mv %F {%F//_{0-9}//_{}}
这样行吗

echo ${text} | sed -r 's/(.*)(_[[:digit:]]*_)(.*)/\1_\3/'
示例:

text="/Dir1/Subdir/ABC_20190101_PQR.csv"
echo ${text} | sed -r 's/(.*)(_[[:digit:]]*_)(.*)/\1_\3/'
/Dir1/Subdir/ABC_PQR.csv

它使用BASH。

您使用什么shell?这个支持“%F”的工具是什么?很难为未指定的工具提供语法建议。查看它的文档。
sed-E
sed-r
更便于携带。(例如,它将在非gnu-sed上工作,在macos中很常见)相同:
sed-E的/[:digit:]{8}}//'