У меня есть около 500 файлов .txt с 2013 по 2015 год, помещенных в папку, и мне нужно переместить все файлы 2013 и 2014 годов в какую-то другую папку.
решение1
Если предположить, что «года 2013 и года 2014» означает «со временем изменения в 2013/2014», то можно получить список файлов с помощью:
stat -c '%y %n' * | grep -v '^2015' | cut -d " " -f 4-
Что это делает:
stat -c '%y %n'
Распечатать время последнего изменения и имя файла
*
Из всех файлов в папке
grep -v '^2015'
Исключить данные за 2015 год.
вырезать -д " " -ф 4-
Наконец, удалите временную метку, оставив только имя файла (при условии, что у вас нет странных имен файлов со встроенными символами новой строки)
Затем вы можете обработать файлы с помощью такого инструмента, как xargs
, или даже цикла for (если символы позволяют), чтобы переместить их в нужную папку.
решение2
Если в именах этих файлов есть год, то все довольно просто. Если вы знакомы с терминалом, вот пример.
Допустим, вы хотите переместить все файлы из 2013 года в папку под названием «2013files», и их имена будут выглядеть примерно так: «2013 stuff.txt» или «january 2013.txt».
Перейти в вашу папку
cd /path/to/your/folder/
Создайте папку, в которую вы хотите переместить файлы.
mkdir 2013files
Затем переместите все файлы, в названии которых есть «2013».
rename ./*2013*.txt ./2013files
ВАЖНО: перед использованием команды «переименовать» используйте вместо нее «cp», чтобы убедиться, что вы ничего не напечатали неправильно, иначе у вас может остаться только один файл.
ВАЖНО (2): всегда делайте резервную копию своих файлов перед любыми действиями