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