Как копировать файлы в другой каталог на основе метки времени (день месяца) файлов?

Вероятно, это не то, о чем вы просили, но вы можете заставить E17 запускать ЛЮБОЙ файловый менеджер, просто щелкнув правой кнопкой мыши значок папки/тома, выбрав «Открыть с помощью… другого приложения» и введя имя файла. исполняемый файл менеджера в приглашение Run Anything. Я делаю это все время с PCManFM. Вероятно, это не лучший FM-модуль для E17, но он намного лучше, чем собственный FM-модуль E17.

0
09.07.2019, 23:17
3 ответа

statпоможет вам узнать, когда файл был изменен, или его размер, или почти все атрибуты файла, которые будет отображать ls.

Во FreeBSD, например, stat -f %Sm -t %d -- fooпокажет вам день месяца, когда файл fooбыл изменен в последний раз, что, по-видимому, и является тем, что вам нужно.

Нет необходимости в find, вы можете напрямую перебирать файлы, как в этом bashпримере:

for f in *; do
  d=$(stat -f %Sm -t %d -- "$f")
  cp -p -- "$f" $d/
done

В ответ на ваш комментарий о том, что ваша целевая ОС — RedHat, похоже, что утилита RedHat statне обладает той гибкостью форматирования, которая есть у FreeBSD. Вы можете сравнить справочные страницы здесь .

Вы можете найти подходящую замену команде date -r foo "+%d". Тогда соответствующая строка сценария станет:

  d=$(date -r "$f" "+%d")
0
28.01.2020, 02:39

Вы можете попробовать вот так. Я тестировал. Это должно работать

cp `ls -ltrh *txt  | awk '{if($7=2){print $NF}}'` `ls -ltrh *txt  | awk '{print $7}'`

Я рассмотрел только день 2, и каталог находится на том же пути. Пожалуйста, добавьте другие даты, и если каталог является другой папкой, добавьте и ее.

Другое предположение заключается в том, что в имени файла нет пробела.

0
28.01.2020, 02:39

Если у вас есть zsh, вы можете сделать это с помощью его модуля zstat:

zmodload zsh/stat
for f in *.txt
do
  cp -p -- "$f" $(zstat -F %d +mtime "$f")/
done

Команда zstat -F %d +mtimeзапрашивает отформатированный вывод(-F %d)за день -из --месяц времени модификации файлов. Результирующее десятичное число находится в диапазоне от 01 до 31 и используется в качестве цели для команды cp.

1
28.01.2020, 02:39

Теги

Похожие вопросы