将路径附加到文件名

将路径附加到文件名

我的许多子文件夹中有一些名为 test1.jpg 的图片。我基本上想将文件的路径附加到其名称中,这样就不会造成混淆。

样本路径:

/tmp/xxx2016/folder123/folder2/folderxxx/test1.jpg

完成后我想重命名该文件:

123_02_01_01.jpg

有人可以帮我使用 find 和 mv 命令来完成此操作吗?我对 bash 还很陌生。

#!/bin/bash

 find . -name '*.jpg' | grep test1
     newname="$(echo ${FILE} | grep -o "[0-9]*" | tr "\n" "_" | sed s/2016_//;s/_$/.jpg\n/;')"
     mv "${FILE}" "${newname}" ;
 done
exit 0

答案1

一些让你开始的事情;

$ echo "/tmp/xxx2016/folder123/folder2/folderxxx/test1.jpg" | grep -o "[0-9]*" | tr "\n" "_" | sed 's/_$/.jpg\n/;'
2016_123_2_1.jpg

编辑,跳过 2016 年;

$ echo "/tmp/xxx2016/folder123/folder2/folderxxx/test1.jpg" | grep -o "[0-9]*" | tail -n +2 | tr "\n" "_" | sed 's/_$/.jpg\n/;'
123_2_1.jpg

或者

$ echo "/tmp/xxx2016/folder123/folder2/folderxxx/test1.jpg" | grep -o "[0-9]*" | tr "\n" "_" | sed 's/2016_//;s/_$/.jpg\n/;'
123_2_1.jpg

相关内容