Переместить команду в 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): всегда делайте резервные копии своих файлов, прежде чем что-либо