В текущей разработке сделал скриптик, может кому пригодиться 🙂
Ищет изменённые файлы по маске «*.php» в рутовой директории, за исключением [«bitrix», «upload», «local»] за последние сутки.
Две доки по find с хорошими примерами
https://www.dmosk.ru/miniinstruktions.php?mini=search-linux
https://masterpro.ws/forum/6-linux/4710-kak-nayti-nedavno-modificirovannye-fayly-v-linux
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<? namespace WebSlon; ini_set(«xdebug.overload_var_dump», «off»); echo «<pre>»; $lastModFiles = new LastModify(); $time_start = microtime(true); $res = $lastModFiles->getFiles(); var_dump($res); $time_end = microtime(true); echo $time_end — $time_start; class LastModify { public $fileMask; public $skipDirs; public $rootdir; public $lastModifyMinutes; public $modifyFiles; public function __construct() { $this->fileMask = «.php»; $this->skipDirs = [«bitrix», «upload», «local»]; $this->rootdir = rtrim($_SERVER[«DOCUMENT_ROOT»],«/»); $this->lastModifyMinutes = 24*60; } public function getFiles() { $curdir = dir($this->rootdir); $this->modifyFiles .= str_replace($this->rootdir, «», $this->getDirFiles($this->rootdir, true)); while($dir = $curdir->read()) { if ($dir == ‘.’||$dir == ‘..’||in_array($dir, $this->skipDirs)||!is_dir($this->rootdir.‘/’. $dir)) { continue; } $res = $this->getDirFiles($this->rootdir.‘/’. $dir); if(!empty($res)){ $this->modifyFiles .= str_replace($this->rootdir, «», $res); } } return $this->modifyFiles; } public function getDirFiles($dir, $noRecursive=false) { $maxdepth = $noRecursive ? ‘ -maxdepth 1’ : »; // -newermt «2019-11-02 00:00» можно вместо минут указывать дату, тут посмотреть как удобнее $command = ‘find ‘.$dir.‘/’.$maxdepth.‘ -type f -name «*.php» -mmin -‘.$this->lastModifyMinutes; $res = shell_exec($command); return $res; } } |