Если я понимаю правильно, что Вы хотите сделать, это - решение:
#!/bin/sh
USAGE="Usage: [110] dir file1 file2 ... fileN\nto find all subdirectories of dir that contain all the given files.\n"
if [ "$#" == "0" ]; then
printf "$USAGE"
exit 1
fi
ARG=""
DIR=$1
shift
while (( "$#" )); do
ARG="$ARG -exec test -e \"{}/$1\" \; "
shift
done
cmd="find $DIR -type d $ARG -print"
eval $cmd
то, Что это делает, является этим:
использование find ... -type d
для нахождения всех подкаталогов (включая каталог данными как первый параметр). test -e
команда проверяет, существует ли файл. Таким образом для данного каталога мы должны проверить все файлы, данные в командную строку: тестовый-e/path/to/directory/file1 тестирует тестовый-e/path/to/directory/file3-e/path/to/directory/file2... Эти /path/to/directory
{}
- единственный результат находки. Затем находить-параметр -exec
может использоваться для проверки на единственный файл. Для проверки на все файлы нескольких -exec test
, параметры необходимы. Так сборка цикла с условием продолжения список там параметров, затем этот список соединен в единственной команде и оценен.
Весело проводят время...
В MS Power Tools существует политика регистрации (политика запрещенных шаблонов), которая позволяет сравнивать имена файлов с регулярным выражением. См.: Microsoft Team Foundation Server Power Tools
Хотя политики регистрации не являются полностью надежными, они - самое близкое средство TFS для обеспечения соблюдения определенных пользователем правил, подобных тем, что вы ищете.
(И как другие говорили, что вы также можете замаскировать файл или папку, что означает, что они остаются в системе управления версиями и видны всем остальным в команде, но они не копируются на ваш компьютер, пока вы не решите их раскрыть; или вы можете удалить файл ,
Если все, что вам нужно, это иметь файл в проекте, но не в системе управления версиями с TFS, просто войдите в SourceControl, удалите указанный файл и отмените извлечение файла проекта (он также попытается удалить файл из проекта). Затем отметьте удаление файла, который вы исключаете. В обозревателе решений вы должны увидеть, что рядом с исключаемым файлом нет значка управления версиями. В файле проекта должен быть указан файл, но этот файл больше не должен находиться в системе контроля версий.
Имейте в виду, что любой другой человек теперь увидит отсутствующий файл в проекте при получении последней версии.
TFS позволяет выполнять маскировку на уровне папки / файла. Когда что-то замаскировано, TFS не будет пытаться синхронизировать это (подобно svn: ignore).
При настройке рабочего пространства замаскируйте все, что вы хотите, чтобы TFS игнорировала. Более подробные инструкции здесь .