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

2 ответа2

0

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

0

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

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

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

cd /path/to/your/folder/

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

mkdir 2013files

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .