Переместить команду в Linux, чтобы переместить несколько файлов с одинаковым расширением, но разного года

У меня есть около 500 .txt файлов с 2013 по 2015 год, помещенных в папку, и мне нужно переместить все файлы 2013 и 2014 года в какую-то другую папку.

2 ответа

Предполагая, что "2013 и 2014 года" означает "со временем модификации в 2013 / 2014", вы можете получить список файлов с:

stat -c '%y %n' * | grep -v '^2015' | cut -d " " -f 4-

Что это делает:

stat -c '% y% n'

Напечатайте время последнего изменения и имя файла

*

Из всех файлов в папке

grep -v '^2015'

Исключить те из 2015

cut -d "" -f 4-

Наконец, удалите временную метку, оставив только имя файла (при условии, что у вас нет странных имен файлов со встроенными символами новой строки)

Затем вы можете обработать файлы с помощью инструмента, такого как xargsили даже цикл for (если позволяют символы) для перемещения их в нужную папку.

Если в этих файлах указан год, это довольно просто. Если вы знакомы с терминалом, вот пример.

Допустим, вы хотите переместить все файлы с 2013 года в папку с именем "2013files", и их имя будет выглядеть как "2013 stuff.txt" или "январь 2013.txt"

Перейти в вашу папку

cd /path/to/your/folder/

Создайте папку, куда вы хотите переместить ваши файлы

mkdir 2013files

Затем переместите все файлы с "2013" в их именах

rename  ./*2013*.txt  ./2013files

ВАЖНО: перед использованием команды "переименовать", используйте вместо этого "cp", чтобы убедиться, что вы ничего не набрали, иначе вы можете получить только один файл.

ВАЖНО (2): всегда делайте резервные копии своих файлов, прежде чем что-либо

Другие вопросы по тегам