보안 카메라에서 복사한 파일 디렉터리가 있는데 파일 날짜별로 하위 디렉터리로 구성하고 싶습니다. 예를 들어;
-rwxrwxrwx 0 root root 4935241 Jul 19 2012 DSCN1406.JPG
-rwxrwxrwx 0 root root 4232069 Jul 19 2012 DSCN1407.JPG
-rwxrwxrwx 0 root root 5015956 Jul 20 2012 DSCN1408.JPG
-rwxrwxrwx 0 root root 5254877 Jul 21 2012 DSCN1409.JPG
해당 디렉터리의 파일을 살펴보고 다음 이름으로 3개의 필수 디렉터리를 생성하기 위해 실행되는 스크립트를 원합니다.
drwxrwxrwx 1 root root 0 Sep 2 16:49 07-19-2012
drwxrwxrwx 1 root root 0 Sep 2 16:49 07-20-2012
drwxrwxrwx 1 root root 0 Sep 2 16:49 07-21-2012
그런 다음 파일을 적절한 디렉터리로 이동합니다. 이를 달성하기 위한 좋은 스크립트 방법에 대한 제안이 있는 사람이 있습니까?
답변1
Linux 및 Cygwin에서는 date -r
.
for x in *.JPG; do
d=$(date -r "$x" +%Y-%m-%d)
mkdir -p "$d"
mv -- "$x" "$d/"
done
(저는 명확하고 표준이며 정렬하기 쉬운 YYYY-MM-DD 날짜 형식을 사용합니다.)
답변2
정리할 객체가 파일인지도 확인합니다. 이는 중요한 확인 사항입니다. 실패할 경우 해당 날짜의 디렉토리 자체가 다른 날짜로 이동될 수 있습니다. 실제로 이는 답변을 더욱 멱등하게 만들어 여러 번 실행할 수 있게 합니다.
dir="mention the directory path"
cd "$dir"
for x in *; do
if [ -f "$x" ]; then
d=$(date -r "$x" +%Y/%B/%d)
mkdir -pv "$d"
mv -v -- "$x" "$d/"
fi
done