Option Explicit
Sub test()
Debug.Print "Var 1 : "; CountRangeIf("not(A3="""")", Range("E3:H3"))
Dim testCriteria As Boolean
testCriteria = Not (Range("A3").Value = "")
Debug.Print "Var 2 : "; CountRangeIf_Var2(testCriteria, Range("E3:H3"))
End Sub
Public Function CountRangeIf(IfCriteriaString As String, CountRange As Range) As Variant
Dim resultCriteria As Boolean
CountRangeIf = "" ' Result = "" if Criteria is false
resultCriteria = Evaluate(IfCriteriaString)
With Application.WorksheetFunction
If resultCriteria Then
CountRangeIf = .CountA(CountRange)
End If
End With
End Function
Public Function CountRangeIf_Var2(IfCriteria As Boolean, CountRange As Range) As Variant
CountRangeIf_Var2 = "" ' Result = "" if Criteria is false
With Application.WorksheetFunction
If IfCriteria Then
CountRangeIf_Var2 = .CountA(CountRange)
End If
End With
End Function
просто:
find . -mtime -1 | xargs tar --no-recursion -czf myfile.tgz
где найти. -mtime -1
выберет все файлы (рекурсивно) в текущем каталоге, измененные накануне. вы можете использовать дроби, например:
find . -mtime -1.5 | xargs tar --no-recursion -czf myfile.tgz
Это будет работать для некоторого количества файлов. Вы хотите включить «-print0» и «xargs -0» на случай, если в любом из путей есть пробелы. В этом примере выполняется поиск файлов, измененных за последние 7 дней. Чтобы найти те, которые были изменены за последние 7 дней, используйте «+7».
find . -mtime -7 -print0 | xargs -0 tar -cjf /foo/archive.tar.bz2
Как эта страница предупреждает, xargs может вызвать многократное выполнение команды tar, если есть много аргументов, а флаг «-c» может вызвать проблемы. В этом случае вам может потребоваться следующее:
find . -mtime -7 -print0 | xargs -0 tar -rf /foo/archive.tar
Вы не можете обновить заархивированный tar-архив с помощью tar, поэтому вам придется использовать bzip2 или gzip на втором этапе.
Это должно показать все файлы, измененные за последние 7 дней.
find . -type f -mtime -7 -print
Вставьте их в tar / zip, и все будет в порядке.
ну под linux попробуйте прочитать справочную страницу команды find
man find
что-то вроде этого должно
find . -type f -mtime -7 -print -exec cat {} \; | tar cf - | gzip -9
и оно у вас есть
Если у вас есть GNU find
, то есть множество подходящих опций. Единственная загвоздка в том, что интерфейс к ним меньше звездного:
-mmin n
(время модификации в минутах) -mtime n
(время модификации в днях) -newer file
(время модификации новее, чем время модификации файла) -daystart
(настроить время начала с текущего времени на начало дня) Самая сложная часть - это определение количества минут с момента времени.
Один из вариантов, который стоит рассмотреть: используйте коснитесь
, чтобы создать файл с требуемой отметкой времени изменения; затем используйте find
с -newer
.
touch -t 200901031231.43 /tmp/wotsit
find . -newer /tmp/wotsit -print
rm -f /tmp/wotsit
Это ищет файлы новее, чем 2009-01-03T12: 31: 43. Очевидно, что в сценарии / tmp / wotsit
будет именем с PID или другим значением, чтобы сделать его уникальным; и будет ловушка
, чтобы гарантировать, что он будет удален, даже если пользователь прерывает, и так далее и так далее.
Вы можете получить список файлов, последний раз измененных позже, чем x дней назад, с помощью:
find . -mtime -x
Затем вам просто нужно заархивировать и заархивировать файлы в итоговом списке, например:
tar czvf mytarfile.tgz `find . -mtime -30`
для всех файлы, измененные за последний месяц.