我有一个目录,里面有几千张图片。其中大部分都有合理的文件名,如 SD-000.tif、SD-001.tif、BX-000.tif 等...
然而其中约 25% 可能有类似 BX-003_old.tif BX-004_veryold.tif 的名称。
如何通过删除每个文件末尾的 _word 来重命名问题文件?
文件存储在 FreeBSD 服务器上,但目录通过 samba 共享。
我尝试使用 sed 和 awk 的组合,但却无法让它们仅处理文件的中间部分。
有人有什么想法吗?
答案1
newname=${filename%_*}.${filename##*.}
${filename%_*}
给出最后一个下划线之前的部分。
${filename##*.}
给出最后一个点之后的部分(扩展名)。
答案2
为了防止将来有人遇到类似的问题,我最终使用 cut 命令修复了这个问题。我运行了:
for i in *
do
mv $i `echo $i|cut -d"_" -f1`
done
循环只是选择当前目录中的所有文件,cut -d 指定截断指定字符后的所有内容。在我的例子中是 _。