необходимо переместить файлы в другую папку на основе даты создания

У меня есть набор файлов, созданных с понедельника по пятницу.

a -- > 08/20 a1---> 08/21 a2---> 08/21 a3---> 08/21 a4---> 08/22 a5 --> 08/23 

Мне нужно переместить только файл 08/21 в папку diffrenet.

Как это возможно ?

Предположим, что время модификации файлов сохраняется (файлы не изменяются после их создания). Затем вы можете играть с командой find и -mtime которая ищет файлы, данные которых были в последний раз модифицированы X дней назад. Таким образом, чтобы найти все созданные файлы, например, 48 часов назад в текущем рабочем каталоге, используйте

 find ./ -type f -mtime 2 

переместить их в другой каталог

 find ./ -type f -mtime 2 -exec mv {} DEST_DIR \; 

Кроме того, вы можете попытаться оценить количество дней с текущей даты и дату, с которой вы запросили файлы (в этом примере 22)

 DAY_CUR="`date +%d`" DAY_REQ=22 DAY_DIF=$((DAY_CUR - DAY_REQ)) find ./ -type f -mtime $DAY_DIF -exec mv {} DEST_DIR \; 

Код не идеален, так как он не обрабатывает ситуации, когда два дня происходят с двух разных месяцев, но это иллюстрирует, как вы можете продолжить.

Поэтому вы хотите перемещать файлы на основе их атрибутов. Это означает, что вам нужно идентифицировать или «найти» файлы, а затем переместить результат в другую папку.

Утилита find сделает отличную работу 🙂

find вызванный без каких-либо аргументов, просто отобразит полное содержимое папки. Затем вы можете указать различные критерии фильтрации. Полный список см. В разделе « man find ( http://unixhelp.ed.ac.uk/CGI/man-cgi?find ).

Вот некоторые примеры:

  [..] -mmin n File's data was last modified n minutes ago. -mtime n File's data was last modified n*24 hours ago. See the comments for -atime to understand how rounding affects the interpretation of file modification times. -newer file File was modified more recently than file. If file is a sym- bolic link and the -H option or the -L option is in effect, the modification time of the file it points to is always used. [..] 

Затем вы можете использовать -exec для вызова mv и использовать {} в качестве заполнителя для текущего файла.

Пример: find /some/path/ -mtime +4 -exec mv {} /some/other/path/

Pro-Tip: Call find без -exec чтобы узнать, получаете ли вы правильные файлы 🙂

Вы можете использовать команду find для определения файлов, созданных в день, и использовать шаблон имени файла для дальнейшего ограничения поиска. Используйте -exec в find для mv файлов.