setlocal enabledelayedexpansion
set /p input=Enter the target directory:%=%
set RawData=!input!\*.*
set target_folder=x:\
for %%a in ("%RawData%") do (
echo Processing %%~nxa ...
set File=%%~fa
for /f "tokens=1* delims=," %%a in ('wmic datafile where "name='!File:\$
echo %%~nxa: !LastModified!
set cYear=!LastModified:~0,4!
set cMonth=!LastModified:~4,2!
set cDay=!LastModified:~6,2!
set TimeStamp=!cYear!-!cMonth!-!cDate!
if not exist "%target_folder%\!TimeStamp!" (
md "%target_folder%\!TimeStamp!"
)
move "!File!" "%target_folder%\!TimeStamp!"
)
target_folder는 원하는 디렉토리로 바꾸면 되고 매번 바뀐다면 user input으로 받아서 그걸 사용하게 해도 된다
생선된 날짜되신 "마지막 바뀐?"날로 폴더를 만들게 만들었다 Linux에서도 그렇지만 Windows에서도 Created date은 에러가 있는거 같다.
다음은 Linux bash script
#!/bin/bash
read -p "Enter the source directory >" source_dir
read -p "Enter the target directory >" target_dir
find "$source_dir" -type f |
while IFS= read -r file; do
folder_date=$(date -d "$(stat -c %y "$file")" +%Y-%m-%d)
[[ ! -d "$target_dir/$folder_date" ]] && mkdir -p "$target_dir/$folder_date";
mv "$file" "$target_dir/$folder_date"
done
간단하다. stat -c %w 가 생선된 날짜를 돌려줘야하지만 리눅스에서는 "-"로 나오기때문에 last modified date으로 폴더를 만든다.
다음은 Mac BSD bash script
#!/bin/bash
#For MAC OSX Bash
read -p "Enter the source directory >" BASE_DIR
read -p "Enter the target directory >" target_dir
find "$BASE_DIR" -type f |
while IFS= read -r file; do
folder_date=$(stat -f "%SB" -t "%Y-%m-%d" "$file")
[[ ! -d "$target_dir/$folder_date" ]] && mkdir -p "$target_dir/$folder_date"
## Move the file
mv "$file" "$target_dir/$folder_date"
done
대충보면 리눅스와 같아 보이지만 BSD기반이라 stat -c로 파일 정보를 가져올수 없다 대신 더 간단하게 stat -f "%SB" 로 파일의 birthdate을 가져온후 -t option으로 원하는 날짜를 빼내면 된다.
'Programming > Bash' 카테고리의 다른 글
[BASH] Make multiple screenshots into one image(tile, mosaic) by using ffmpeg (0) | 2017.02.06 |
---|---|
관리자권한으로 cron 설정하기. It's easy to use. (0) | 2016.06.10 |
How to check the length of a media file on bash - bash 를 이용한 동영상 파일 길이 알아내기. (0) | 2016.03.28 |
나만의 유튜브 영상 다운로더 by using bash (0) | 2016.01.10 |
[BASH] 기본 BASH 업그레이드 및 활용하기 (1) | 2015.11.11 |