Я получил много данных за эти годы, и я ищу инструмент, который может получить имя папки и затем переместить все файлы в подпапки к году, как:
2005
2006
2007
etc..
Кто-либо знает что-то или подобный инструмент?
Сохраните этот текст в файл (sort.py
) и выполненный это:
./sort.py src-dir/ dst-dir/
Это циклично выполняется через исходный каталог, получает mtime всех файлов и папок, и перемещает их в целевой каталог.Примечание: Это не рекурсивно! Используйте его на Ваш собственный риск!
#!/usr/bin/env python # -*- coding: iso-8859-15 -*- import os import sys import shutil from datetime import date # Check arguments if len(sys.argv) > 2: src = sys.argv[1] dst = sys.argv[2] else: print "Arguments: ./sort.py [src] [dst]" sys.exit(1) # Check paths if not os.access(src, os.R_OK): print "Source path not found" sys.exit(2) if not os.access(dst, os.W_OK): print "Destination path not found" sys.exit(3) # Start sorting from root for f in os.listdir(src): fpath = os.path.join(src, f) mtime = os.stat(fpath).st_mtime year = str(date.fromtimestamp(mtime).year) ypath = os.path.join(dst, year) if not os.access(ypath, os.W_OK): os.mkdir(ypath) print "Moving %s to %s" % (fpath, ypath) shutil.move(fpath, ypath)
Использование решения bash
.
Сохраните следующий сценарий к ~/my-script
#!/bin/bash
dst="$1"
shift
for f; do
year=$(stat -c '%y' "$f" | sed 's/-.*//')
ext=$(sed 's/.\+\.//' <<<"$f")
ext=
[[ $ext == $f ]] && ext=
dir="$dst/$year/$ext"
mkdir -p "$dir"
cp --backup=numbered "$f" "$dir"
done
сделайте это исполняемым файлом, затем работайте
find /path/from -type f -exec ./my-script /path/to {} +
где /path/from
и /path/to
должен быть заменен источником и целевыми каталогами. Например, предположение всего Вы, данные находятся в Вас домой, можно выполниться
find $HOME/* -type f -exec ./my-script $HOME/DocumentsByYear {} +
где ~/DocumentsByYear
и все подкаталоги будут, создают по мере необходимости. Я поместил как исходный путь $HOME/*
избегать скрытых файлов.
Если Вы комментируете строку с ext=
, Вы получите в каждом подкаталоге года дальнейшая классификация расширением файла.
Сценарий заботится о столкновениях имени с функцией резервного копирования cp
команда.