Shell-Script
創建子目錄並按日期組織文件
我有一些從我的安全攝像頭複製的文件目錄,我想按文件日期將它們組織到子目錄中。例如,例如;
-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
然後將文件移動到適當的目錄中。有沒有人對完成此任務的良好腳本方式有任何建議?
在 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 日期格式。)
這也檢查要組織的對像是否是文件。這是一項重要的檢查,如果失敗,日期的目錄本身可以移動到另一個日期。實際上,這使答案更加冪等,允許多次執行。
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