Команда move в Linux для перемещения нескольких файлов с одинаковым расширением, но разного года выпуска

Команда move в Linux для перемещения нескольких файлов с одинаковым расширением, но разного года выпуска

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

Связанный контент