В zsh
, при подсказке ввести print
, и затем Alt-H.
Если это дает Вам страницу справочника для print
системная команда вместо print
встроенный, можно хотеть следовать инструкциям, данным при Доступе к Справке Онлайн в:
info zsh Utilities
Для zsh
документация, я предпочитаю использовать info
в целом. zsh
документация правильно индексируется, и очень легко найти использование документации info
.
Например, найти документацию для print
, ввести info zsh
, и в info
, тип i для перевода в рабочее состояние индексной подсказки и типа print
(можно добавить несколько Вкладок для получения списка завершения). Или просто выполненный
info zsh print
Открыть zsh информационную книгу и перейти непосредственно к print
элемент индекса.
Как предложила Вивиан, вариант -t
в ls
говорит ему сортировать файлы по времени модификации.
(последняя первая, по умолчанию; перевернута, если добавить -r
).
Это наиболее часто используется (по крайней мере, по моему опыту) для сортировки файлов в каталоге,
но его также можно применить к списку файлов в командной строке.
А подстановочные знаки ("глобусы") создают список файлов в командной строке.
Таким образом, если вы скажете
ls -t */file.php
он составит список
domain3/file.php domain4/file.php domain2/file.php domain1/file.php
Но вы добавите опцию -1
(тире один), или впишите это во что-нибудь,
он будет перечислять их по одному на каждую строку. Итак, команда, которую вы хотите, это
ls -t */file.php | sed 's|/file.php||'
Это обычная
s/old_string/replacement_string/
substitution in sed
,
но используя |
в качестве разделителя, потому что old_string
содержит /
,
и с пустой replace_string
.
(Т.е. удаляется имя файла и /
перед ним - /file.php
-.
от выхода ls
.).
Конечно, если вы хотите, чтобы трейлинг /
на имена каталогов,
просто сделайте sed 's|file.php||'
или sed 's/file.php//'
.
При желании добавьте опцию -l
(нижний регистр L) к ls
.
чтобы получить длинный список, включая дату/время модификации.
И тогда, возможно, вы захотите усилить команду sed
.
для удаления несущественной информации (такой как режим, владелец и размер файла).
и, если хотите, переместите дату/время после имени каталога.
Это изучит директории, которые являются в текущей директории, и только их. (Похоже, что это и есть тот вопрос). Выполнение одноуровневого сканирования некоторого другого каталога является тривиальным вариантом:
ls -t /path/to/tld/*/file.php | sed 's|/file.php||'
To (рекурсивно) выполнить поиск по всему дереву каталогов под вашим текущим каталогом. (или какой-нибудь другой каталог верхнего уровня) немного сложнее. Введите команду
shopt -s globstar
и затем замените звездочку (*
) в одной из вышеприведенных команд на две звездочки (**
), например,
ls -t **/file.php | sed 's|/file.php||'
Проверьте pie
(« tee standard input to pipes
») из morutils
. Это в основном эквивалентно команде Marco tee
, но немного проще в вводе.
$ echo foo | pee md5sum sha256sum
d3b07384d113edec49eaa6238ad5ff00 -
b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c -
$ pee md5sum sha256sum <foo.iso
f109ffd6612e36e0fc1597eda65e9cf0 -
469a38cb785f8d47a0f85f968feff0be1d6f9398e353496ff7aa9055725bc63e -
-121--17801- Да, это вполне возможно.
Это даст вам файлы, которые были изменены за последние 60 минут:
$ find /domain -type f -mmin -60
или это даст вам файлы, которые были отсортированы по времени изменения.
$ find /domain -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r
Если у вас есть расширения файлов, как вы сказали «.php», добавьте следующее:
-name '*.php'
И я нашел это , вы можете его увидеть.
Ну, ваша последняя правка усложняется. Но вы можете использовать ls -t
для последнего изменения каталогов, и если вы хотите сортировать по времени ls -clRt
вы можете использовать его и после этого вы можете проверить файлы, но я не уверен, что вы хотите возможно с помощью какой-либо конкретной команды. Это возможно с похожим сценарием (Bash или Perl).
Это делает почти все, что нужно, за исключением того, что оно оставляет имена каталогов в конце/в конце.
find . -maxdepth 2 -name file1.php -printf '%T@ %h (last modified %Td/%Tm/%TY %Tk:%TM)\n' \
| sort -k 1n | sed 's/^[^ ]* .\///'
Кредит, в котором должен быть кредит. Он адаптирован из shlck ответа здесь .
Изменить: все мои% A должны были быть% T
Да, это вполне возможно.
Это даст вам файлы, которые были изменены за последние 60 минут:
$ find /domain -type f -mmin -60
или это даст вам файлы, которые отсортированы по времени изменения.
$ find /domain -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r
Если у вас есть расширения файлов, как вы сказали '.php', добавьте это:
-name '*.php'
И я нашел это, возможно, вы захотите это увидеть.
Ну, ваше последнее редактирование усложняет дело. Но вы можете использовать ls -t
для последней модификации каталогов, и если вы хотите сортировать по времени ls -clRt
, вы можете использовать его, а после этого вы можете проверять файлы, но я не уверен, что то, что вы хотите, возможно с помощью какой-либо конкретной команды. Это возможно с помощью похожего скрипта (Bash или Perl).
С помощью zsh
:
setopt extendedglob
print -rl -- **/file.php(.om:h)
.om
сортирует выбранные файлы по mtime
и :h
удаляет компонент трафика трейлинга.
Если вы также хотите перечислить mtime
s, вы можете использовать zstat
:
zmodload zsh/stat
for f (**/file.php(.om))
printf '%s %s\t%s\n' $(zstat -F '%d-%b-%Y %T' +mtime -- $f) ${f:h}