У меня есть скрипт для поиска файлов с более высокой ревизией (на основе соглашения об именовании файлов).
IE Ultimate Spreadsheet (Rev A) .xls удаляется, если Ultimate Spreadsheet (Rev B) .xls существовал.Это делает то же самое с номерами версий довольно хорошо.Я пытаюсь добавить функциональность, чтобы в основном происходило то же самое, но чтобы включить файлы без "Rev", поскольку в некоторых именах файлов вообще нет "Rev".
Так, например, я хотел добавить функциональностьдля:
Ultimate Powerpoint.ppt , подлежащее удалению, если Ultimate Powerpoint (Rev A) .ppt или Ultimate Powerpoint (Rev B) .ppt существовалЯ думаю, что у меня почти есть код, чтобы сделать это, уже основанный на том, что он работает с первым правилом, упомянутым выше, но я сам не писал его, и я довольно придирчив к PHP, поэтому задавался вопросом, может ли кто-то указать мне правильное направление.Большое спасибо!Мой текущий код:
$fileList = trim(shell_exec("ls -a -1"));
$fileArray = explode("\n", $fileList);
shell_exec('mkdir -p Removed');
// Do this magic for every file
foreach ($fileArray as $thisFile)
{
if (!$thisFile) continue;
// Probably already been removed
if (!file_exists($thisFile)) continue;
$niceName = trim(preg_replace('%[\(|\[].*%', '', $thisFile));
preg_quote(pathinfo($thisGame, PATHINFO_EXTENSION), '/') . '$/', '', $thisFile);
// Check for reversions e.g. (Rev 2) or (Rev A)
if (preg_match('%\(Rev (\d|[A-Za-z])\)%', $thisFile, $revNum))
{
if (is_numeric($revNum[1]))
{
$revNum = intval($revNum[1]);
}
else
{
$revNum = ord($revNum[1]);
}
}
$otherVersions = trim(shell_exec("ls -1 \"{$niceName} (\"*\"(Rev \"* 2>/dev/null"));
if ($otherVersions)
{
$otherVersionArray = explode("\n", $otherVersions);
foreach ($otherVersionArray as $otherFile)
{
preg_match('%\(Rev (\d|[A-Za-z])\)%', $otherFile, $thisRev);
if (is_numeric($thisRev[1]))
{
$thisRev = intval($thisRev[1]);
}
else
{
$thisRev = ord($thisRev[1]);
}
if (isset($revNum) && $revNum < $thisRev)
{
// Other version is newer, bin ours
echo "{$thisFile} has an inferior version number/letter [{$revNum} VS. {$thisRev}] - Moved to Removed folder.\n";
shell_exec("mv ".escapeshellarg($thisFile)." Removed/");
continue 2;
}
}
}
}