我有一个文件夹 Google 照片。这是来自谷歌照片外卖。外卖的工作方式是有多个带有日期名称的文件夹
➜ ~/Google Photos => tree |head -n 20
.
├── 1979-12-31
│ ├── icon-24x24.png
│ ├── icon-24x24.png.json
│ ├── icon_local_color.png
│ ├── icon_local_color.png.json
│ ├── metadata.json
│ ├── viewer-14.png
│ ├── viewer-14.png.json
│ ├── viewer-28.png
│ └── viewer-28.png.json
├── 2001-07-24
│ ├── heic0109a.jpg
│ ├── heic0109a.jpg.json
│ └── metadata.json
├── 2003-01-06
│ ├── ASPdotNET_logo.jpg
│ ├── ASPdotNET_logo.jpg.json
│ ├── darkBlue_GRAD.jpg
│ ├── darkBlue_GRAD.jpg.json
我想将所有不以 json 结尾的文件移动到一个名为./all_photos
. 问题是我的文件夹中可能有两个同名文件。
例如,在文件夹中1979-12-31
我可能有一个名为的文件a.jpg
,在文件夹中2001-07-24
我可能还有另一个名为a.jpg
. 我看过的解决方案移动文件但覆盖或跳过(如果有可能被覆盖)。我想更改文件名,如下所示:1979-12-31_a.jpg
和2001-07-24_a.jpg
. 这将确保没有同名文件,因此不会被覆盖。
我在 Linux 服务器上,我想最好的方法是通过 Linux find 命令,但我不确定确切的命令,所以希望得到帮助。
我写的一个脚本来解决这个问题。可能不是最有效的方法,但如果有更有效的方法请告诉我。采用一个参数 - 您要为其应用脚本的文件夹名称。在上面的示例中,我将运行
./script.sh Google\ Photos
. 适用于 2 级子文件夹。