Я использовал хоббита, старший брат и nagios при работе на более плохой (читайте более дешевый), организации. Из трех я предпочитаю хоббита потому что его простое и пуленепробиваемое. Я всегда чувствовал, что nagios является попыткой, должна быть версия с открытым исходным кодом openview или Тиволи, и откровенно если у меня есть время для расходов конфигурирования платформы как openview, или Тиволи, затем контролирующий, является, вероятно, моим всем заданием, и моя организация может, вероятно, позволить себе купить openview, итак, почему использование nagios?
Во-первых, тест с:
найдите путь к папке-maxdepth 1!-iname 'excludeme' - и - тип f - должностное лицо ls "{}" \;
Затем:
найдите путь к папке-maxdepth 1!-iname 'excludeme' - и - тип f - исполнительная комната "{}" \;
- maxdepth 1 означает смотреть в текущей папке только (и это должна быть первая опция),
!-iname (или - имя) говорит для не включения чего-либо, что соответствует тому, что Вы хотите остаться.
- тип f удостоверяется, что Вы не получаете каталогов в текущей папке.
Если нет никаких открытых файлов в foo
, Вы могли просто переместить его, удалить все остальное и положить обратно его.
Я не думаю, что существует легкое "отрицательное" соответствие в bash
globbing, хотя Вы смогли производить использование того find
regex и соответствия iregex.
править: просто мысль...
ls | grep -v ^./foo$
перечислит все файлы кроме нечто, таким образом, Вы могли использовать
ls | grep -v ^./foo$ | xargs rm
хотя это будет иметь проблемы, если какой-либо файл/имена каталогов будет содержать пробелы.
Можно измениться, regex передал grep по мере необходимости, если Вы хотите соответствовать шаблону, а не единственному файлу/каталогу, или пройти через grep больше раз:
ls | grep -v ^./foo$ | grep -v ^./bar$ | xargs rm -rf
Очень старайтесь протестировать вывод последовательности find+grep прежде, чем добавить xargs rm -rf
шаг.
отредактируйте снова: ls
делает то же как find . -maxdepth 1
и вероятно более просто.
Соответствовать всему кроме чего-то обычно упоминается как обратное соответствие. Развернуть имя файла - сама оболочка, Вы используете globbing. Если бы Вы собираетесь назвать программу за пределами оболочки, Вы, вероятно, хотели бы, находят, как люди упомянули.
Можно сделать обратное соответствие с более новым ударом при включении расширенного globbing. Например, для соответствия всему, что не имеет нечто или панели на имя:
shopt -s extglob
echo !(*foo*|*bar*)
Или просто все, что не имеет нечто:
shopt -s extglob
echo !(*foo*)
Если бы это был маленький список, то я сделал бы что-то как:
ls-1|egrep-v" (file2|file8)" |xargs комната-rf
Который получает список файлов, затем держит для regex, исключая файлы, которые Вы хотите сохранить, и удаляет все остальное.
Необходимо ОПРЕДЕЛЕННО протестировать это, бросив xargs часть, чтобы проверить, что у Вас есть правильный набор файлов.
Существует также более случайное решение, которое является:
Недостаток - то, что Ваши драгоценные файлы на мгновение перемещены. Это решение не подошло бы, если Ваши драгоценные файлы должны быть доступными все время.
Однако этот метод имеет преимущество, которое можно проверить после шага 2, что драгоценные файлы безопасны. Это особенно значительно, если бы существуют скрытые файлы или включенные подкаталоги, который повысил бы возможности делания ошибки с другими методами, предложенными здесь.
Версия для Windows cmd.exe
Распечатайте названия всех каталогов в C:\ кроме названных 'нечто':
@echo off
FOR /D %A IN (C:\*) DO (IF /I NOT "%A"=="C:\foo" (echo %A))
Распечатайте названия всех файлов в C:\ кроме названных 'нечто' (игнорирующий расширения файла):
@echo off
FOR %A IN (C:\*.*) DO (IF /I NOT "%~nA"=="foo" (echo %A))
Распечатайте названия всех файлов в C:\ кроме тех, которые имеют дополнительную 'панель':
@echo off
FOR %A IN (C:\*.*) DO (IF /I NOT "%~xA"==".bar" (echo %A))
Распечатайте названия всех файлов в C:\ кроме названных 'foo.bar':
@echo off
FOR %A IN (C:\*) DO (IF /I NOT "%~nxA"=="foo.bar" (echo %A))
Измените команду 'эха' на то, чем случается так, что Вы хотите сделать - например, 'del'
Все вышеупомянутое нечувствительно к регистру - удаляют '/I' для изменения этого.
Ввести 'для/?' для получения дополнительной информации о % FOR ~ синтаксис.