Если можно, я хотел бы сделать исправление здесь. Ubuntu и Kubuntu получают официальную поддержку от Canonical, корпорации Ubuntu. Xubuntu никогда не получал поддержки, хотя она признана официальной производной. Разработчики Xubuntu делают это в свое время в качестве добровольцев. Для использования на более старом компьютере я бы предложил либо Xubuntu, либо Lubuntu, оба из которых предназначены для использования меньшего количества ресурсов, чем Ubuntu и Kubuntu.
Решение с использованием 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.
Сохраните этот текст в файле (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.
Сохраните этот текст в файле (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.
Сохраните этот текст в файле (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.
Сохраните этот текст в файле (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.
Сохраните этот текст в файле (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)