inode 번호를 기준으로 디렉터리의 파일 이름을 바꾸려고 합니다. 이는 파일(사진)을 촬영된 순서대로 보관하는 고유번호인 것 같습니다. 단일 파일이 아닌 전체 디렉터리로 실행하고 싶습니다.
ls -i
모든 파일의 inode 번호를 제공하지만 모든 파일의 이름 바꾸기 또는 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:"을 가져와 파일의 새 이름으로 보내야 합니다.
Desktop2016-10-22 # 식별-상세 DSC_1140.JPG | grep EXIF:DateTimeOriginal: EXIF:DateTimeOriginal: 2016:10:22 16:29:33
데스크톱 2016-10-22 # 식별 상세 DSC_1140.JPG | grep 파일 이름: 파일 이름: DSC_1140.JPG
답변1
하드 링크를 제외하고 파일의 inode는 동일한 파일 시스템 내에서 고유함이 보장됩니다. .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