Я считаю ваш анализ немного сложным. Начнем с базового случая:
without_last([_], []).
Когда вы находитесь в последнем элементе, результатом должен быть пустой список.
Поэтому индуктивный случай должен иметь место, когда мы не находимся в последнем элементе. В случае, когда у меня есть некоторый элемент, прикрепленный к произвольно длинному списку, этот список без последнего элемента - это только хвост списка без последнего элемента с текущим элементом спереди. Или:
without_last([X|Xs], [X|WithoutLast]) :-
without_last(Xs, WithoutLast).
Это работает во всех направлениях.
?- without_last([1,2,3,4], X).
X = [1, 2, 3] ;
false.
?- without_last([1,2], X).
X = [1] .
?- without_last([1], X).
X = [] ;
false.
?- without_last([], X).
false.
?- without_last(X, [1,2,3]).
X = [1, 2, 3, _G294].
?- without_last([1,2,3,4], [1,2,3]).
true.
?- without_last([1,2,3,X], [1,2,3]).
true.
Некоторые варианты:
find . -cmin -60 -exec ls -ld {} \;
find . -cmin -60 -type f -exec ls -l {} \;
find . -cmin -60 -print0 | xargs -0 ls -ld
find . -cmin -60 -type f -print0 | xargs -0 ls -l
Последние два лучше, но требуют GNU-findutils.
Редактировать: Как отмечалось другими, -cmin -60
означает недавно измененные файлы, -cmin +60
означает не недавно измененные файлы.
Я думаю, что вы хотите
find . -cmin +60 -exec ls -al {} \;
. В нем будут перечислены все файлы в текущем каталоге, созданные более 60 минут назад.
«+» в «+60» означает более 60 минут назад, в то время как «-» в «-60» означает менее 60 минут назад.
Если в вашем find
отсутствует опция cmin
, вы можете touch
файл с отметкой времени 1 час назад и использовать find
с -newer
.