Вероятно, это не то, о чем вы просили, но вы можете заставить E17 запускать ЛЮБОЙ файловый менеджер, просто щелкнув правой кнопкой мыши значок папки/тома, выбрав «Открыть с помощью… другого приложения» и введя имя файла. исполняемый файл менеджера в приглашение Run Anything. Я делаю это все время с PCManFM. Вероятно, это не лучший FM-модуль для E17, но он намного лучше, чем собственный FM-модуль E17.
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")
Вы можете попробовать вот так. Я тестировал. Это должно работать
cp `ls -ltrh *txt | awk '{if($7=2){print $NF}}'` `ls -ltrh *txt | awk '{print $7}'`
Я рассмотрел только день 2, и каталог находится на том же пути. Пожалуйста, добавьте другие даты, и если каталог является другой папкой, добавьте и ее.
Другое предположение заключается в том, что в имени файла нет пробела.
Если у вас есть 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
.