Как перечислить файлы, отсортированные по дате изменения, рекурсивно (нет команды stat!)

Как получить список всех файлов в текущем каталоге вместе с датой их изменения и отсортировать по этой дате?

Теперь я знаю, как добиться этого с помощью find , stat и sort , но по какой-то странной причине stat не установлен на ящике, и вряд ли я смогу его установить.

Любой другой вариант?

PS: gcc не установлен ни

  • Список только обычных файлов (но не каталогов) в текущем каталоге
  • Почему прикосновение создает новые файлы?
  • mv: перемещать файл только в том случае, если адресата не существует
  • Удаление пробелов и вкладок из строки без испорчения концами строк
  • Как показать разрешения в числовом формате?
  • Как указать тип файла в жесткой ссылке
  • Можно ли перечислить файлы между двумя именами буквенно-цифровым способом?
  • Файл для назначенных адресов inet
  • 5 Solutions collect form web for “Как перечислить файлы, отсортированные по дате изменения, рекурсивно (нет команды stat!)”

    Мой самый короткий метод использует zsh:

     print -rl **/*(.Om) 

    Если у вас есть GNU find, заставьте его распечатать время изменения файла и отсортировать его. Я предполагаю, что в именах файлов нет новых строк.

     find . -type f -printf '%T@ %p\n' | sort -k 1 -n | sed 's/^[^ ]* //' 

    Если у вас есть Perl (опять же, при отсутствии новых строк в именах файлов):

     find . -type f -print | perl -l -ne ' $_{$_} = -M; # store file age (mtime - now) END { $,="\n"; print sort {$_{$b} <=> $_{$a}} keys %_; # print by decreasing age }' 

    Если у вас есть Python (опять же, при отсутствии новых строк в именах файлов):

     find . -type f -print | python -c 'import os, sys; times = {} for f in sys.stdin.readlines(): f = f[0:-1]; times[f] = os.stat(f).st_mtime for f in sorted(times.iterkeys(), key=lambda f:times[f]): print f' 

    Если у вас есть SSH-доступ к этому серверу, смонтируйте каталог поверх sshfs на более оборудованной машине:

     mkdir mnt sshfs server:/path/to/directory mnt zsh -c 'cd mnt && print -rl **/*(.Om)' fusermount -u mnt 

    С помощью только инструментов POSIX это намного сложнее, потому что нет хорошего способа найти время модификации файла. Единственный стандартный способ получить время файла – ls , а выходной формат зависит от языка и трудно анализировать.

    Если вы можете писать в файлы, и вы заботитесь только об обычных файлах, и в именах файлов нет новых строк, вот ужасный kludge: создавайте жесткие ссылки на все файлы в одном каталоге и сортируйте их по времени модификации.

     set -ef # disable globbing IFS=' ' # split $(foo) only at newlines set -- $(find . -type f) # set positional arguments to the file names mkdir links.tmp cd links.tmp i=0 list= for f; do # hard link the files to links.tmp/0, links.tmp/1, … ln "../$f" $i i=$(($i+1)) done set +f for f in $(ls -t [0-9]*); do # for each file, in reverse mtime order: eval 'list="${'$i'} # prepend the file name to $list $list"' done printf %s "$list" # print the output rm -f [0-9]* # clean up cd .. rmdir links.tmp 

    Предполагая, что GNU find :

     find . -printf '%T@ %c %p\n' | sort -k 1n,1 -k 7 | cut -d' ' -f2- 

    Измените 1n,1 на 1nr,1 если вы хотите, чтобы файлы, перечисленные в первую очередь, были первыми.

    Если у вас нет find GNU, это становится сложнее, потому что формат timestamp ls изменяется так сильно (например, недавно измененные файлы имеют другой стиль метки времени).

    На mac нет аргумента -printf для поиска, но вы можете сделать это вместо этого:

    find . -print0 | xargs -0 -n 100 stat -f"%m %Sm %N" | sort -n|awk '{$1="";print}'

    можно попробовать это (нужно создать его самостоятельно) https://github.com/shadkam/recentmost

    Игнорирование скрытых файлов – с хорошей и быстрой печатью времени

    Хорошо обрабатывает пробелы в именах файлов – не то, что вы должны их использовать!

     $ find . -type f -not -path '*/\.*' -printf '%TY.%Tm.%Td %THh%TM %Ta %p\n' |sort -nr |head -n 10 2017.01.25 18h23 Wed ./indenting/Shifting blocks visually.mht 2016.12.11 12h33 Sun ./tabs/Converting tabs to spaces.mht 2016.12.02 01h46 Fri ./advocacy/2016.Vim or Emacs - Which text editor do you prefer?.mht 2016.11.09 17h05 Wed ./Word count - Vim Tips Wiki.mht 

    Дополнительную find можно найти по ссылке.

    Interesting Posts

    Удалить тег и содержимое на основе дочернего тега и добавить новый контент – Shellscript xml

    Ужасная ситуация – файловые системы, смонтированные одновременно несколькими независимыми экземплярами ОС

    iptables маршрутизация входящего IP на другой IP-адрес назначения

    Передайте Ctrl-Q на веб-страницу в Firefox.

    Построение 32-битного в 64-битной системе

    Nagios не запускает команду уведомления

    Можно ли заставить okular не мигать при перезагрузке файла?

    Проблемы с подключением Ethernet Mint / Realtek RTL8101 / 2 / 6E Linux

    Linux: разница между использованием autofs с NFS и использованием fstab

    Могут ли повлиять на адреса символов ядра? последствия?

    Как установить раскладку клавиатуры, используемую для ввода пароля в зашифрованную файловую систему?

    Как использовать новые строки внутри () с sed?

    Remap Ctrl + E для автозаполнения имен файлов в рыбе

    Небольшая задача познакомиться с Linux

    Как исправить отсутствующий апплет Wireless на Debian 8 Gnome Desktop Environment?

    Linux и Unix - лучшая ОС в мире.