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