我如何重命名Unix文件夹中的所有文件与部分文件名?基本上,我想使用第一个连字符前的字符串来重命名文件。
当前文件名格式:
ABC_XYZ-2022-11-09_07.52.03.csv
ABCD_XYZ-2022-11-09_07.52.03.csv
ABCDEF_XY-2022-11-09_07.52.03.csv
所需格式:
ABC_XYZ.csv
ABCD_XYZ.csv
ABCDEF_XY.csv
我是Unix新手,不知道怎么做
for i in *.csv
do
mv -i "$i" "${i%%-*}".csv
done
${i%%-*}
是变量i
的值,将与-*
匹配的最长字符串从末尾去掉。这也删除了.csv
或任何其他.*
结尾。
我使用mv -i
在目标文件已经存在的情况下获得提示。如果两个文件名仅在日期/时间部分不同,则可能发生这种情况。
如果你想保留不同结尾的文件,一个POSIX兼容的解决方案可能会变得有点复杂。
如果所有文件在你想删除的部分后面都包含.
,如果你使用bash
,你也可以使用
for i in *
do
mv -i "$i" "${i/-*./.}"
done