我的许多子文件夹中有一些名为 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