将文件重命名为 inode

将文件重命名为 inode

我正在尝试根据索引节点号重命名目录中的文件。这似乎是使文件(图片)按照拍摄顺序保存的唯一编号。我想将其作为一个完整的目录而不是单个文件来执行。

ls -i为我提供所有文件的索引节点号,但我需要通过管道传输所有文件的重命名或 mv 数据。

电流输出:ls -li

46923838 -rw-r--r-- 1 me me 6937237 Jan 24 15:26 DSC_1167.JPG

46923839 -rw-r--r-- 1 me me 6692804 Jan 24 15:26 DSC_1168.JPG

46923840 -rw-r--r-- 1 me me 6735745 Jan 24 15:26 DSC_1169.JPG

46923841 -rw-r--r-- 1 me me 7709324 Jan 24 15:26 DSC_1170.JPG

46923842 -rw-r--r-- 1 me me 7645673 Jan 24 15:26 DSC_1171.JPG

期望的结果:

46923838 -rw-r--r-- 1 me me 6937237 Jan 24 15:26 46923838.JPG

46923839 -rw-r--r-- 1 me me 6692804 Jan 24 15:26 46923839.JPG

46923840 -rw-r--r-- 1 me me 6735745 Jan 24 15:26 46923840.JPG

46923841 -rw-r--r-- 1 me me 7709324 Jan 24 15:26 46923841.JPG

46923842 -rw-r--r-- 1 me me 7645673 Jan 24 15:26 46923842.JPG

更新:我需要获取“exif:DateTimeOriginal:”并将其作为文件的新名称发送。

桌面 2016-10-22 # 识别 -verbose DSC_1140.JPG | grep exif:DateTimeOriginal: exif:DateTimeOriginal: 2016:10:22 16:29:33

桌面 2016-10-22 # 识别 -verbose DSC_1140.JPG | grep 文件名: 文件名:DSC_1140.JPG

答案1

除了硬链接之外,文件的索引节点在同一文件系统中保证是唯一的。迭代.JPG当前目录中的文件,并mv在 from 的帮助下重命名 (-ing)stat以获取索引节点:

for i in *.JPG; do echo mv -- "$i" "$(stat -c '%i' "$i")"; done

echo将吐出mv将要运行的命令。删除echo以实际操作:

for i in *.JPG; do mv -- "$i" "$(stat -c '%i' "$i")"; done

另外,如果您希望最终文件名也具有扩展.JPG名:

for i in *.JPG; do mv -- "$i" "$(stat -c '%i' "$i").JPG"; done

相关内容