
help chain | help chars | help colors | help compile | help nocase | help office | help options | help patterns | help select | help shell | help unicode | help var | samp | Команда: help select ссылка на выбор файла sfk:
принципы по умолчанию для большинства команд sfk:
- обработка подкаталога (подпапки) производится по умолчанию.
- сравнение имен файлов нечувствительно к регистру.
- скрытые и системные файлы не обрабатываются,
за исключением некоторых команд, таких как копирование.
- переход по символическим ссылкам.
введите «опции справки sfk», чтобы узнать, как это изменить.
как выбрать каталоги и содержащиеся в них имена файлов:
sfk предоставляет множество способов указать, какие файлы вы хотите обработать,
от очень простых, но негибких до очень подробных.
1. выбор файла короткого формата:
имя каталога [маска_файла1] [маска_файла2] [!маска_исключения_файла] [...]
этот формат поддерживает ОДНО имя каталога, за которым следует множество масок файлов.
его можно использовать с большинством команд, обрабатывающих деревья каталогов.
пример:
sfk list mydir foo bar .txt .zip !-tmp
выбирает все файлы
- в каталоге mydir и во всех его подкаталогах
- наличие строки foo ИЛИ в имени файла (* не требуется)
- ИЛИ которые заканчиваются на .txt ИЛИ .zip (*.txt не требуется)
- но без -tmp в имени файла
поддерживается командами:
list, select, stat, run, detab, scantab, hexdump и некоторые другие.
2. выбор файла длинного формата:
-dir root1 [root2] [*pathmask*] [...] [-file mask1 [mask2] [...]
[-dir root3 root4 !direxcludemask -file mask3 !xmask4] [...]
этот формат поддерживает
- несколько наборов корневых каталогов, начиная с -dir, каждый из них
содержащий множество каталогов, масок путей или масок исключения каталогов.
маска пути — это выражение в наборе каталогов, содержащее
подстановочный знак "*". запускается маска исключения каталога
по ! и может быть окружен \ для выбора точных имен каталогов.
- Маска файла устанавливается для каждого набора корневых каталогов, начиная с -file.
это также может содержать исключения файлов, начинающиеся с !
при поддержке:
почти каждая команда, чем может обрабатывать наборы файлов.
чтобы выбрать все каталоги текущего каталога, кроме чего-то:
-реж. !foo -> исключить подкаталоги, такие как *foo*
-реж. !.foo -> исключить с расширением .foo
-реж. !\foo -> исключить начало с foo
-реж. !foo\ -> исключить окончание на foo
-реж. !\foo\ -> исключить именно foo
-реж. !\foo\bar\ -> исключить комбинированный подкаталог
-реж. !*.foo* -> исключить с .foo где угодно
чтобы выбрать только подкаталоги текущего каталога с чем-то:
используя широкие выражения sub dir:
-реж. -subdir foo -> включить пути, имеющие *foo*
-реж. -subdir \foo -> включить пути, имеющие *\foo
-реж. -subdir foo\ -> включить пути, имеющие *foo
-реж. -subdir \foo\ -> включить пути точно foo
-реж. -subdir .foo -> включить с расширением .foo
-реж. -subdir \foo\bar\ -> включить комбинированный подкаталог
вместо -subdir вы также можете ввести просто -sub
используя компактные выражения sub dir:
-реж. *foo* -> включить пути, имеющие *foo*
-реж. *\foo -> включить пути, содержащие \foo
-реж. *foo\ -> включить пути, содержащие foo\
-реж. *\foo\ -> включить пути точно foo
-реж. *.foo -> включить с расширением .foo
-реж. *\foo\bar\ -> включить комбинированный подкаталог
исключение по имени файла:
-file !foo -> исключить все файлы типа *foo*
-file !\foo -> исключить начинающийся с foo
-file !foo\ -> исключить окончание на foo
-file !\foo\ -> исключить точно foo
-file !.foo -> исключить расширение foo
включение по имени файла:
-file foo -> включить все файлы типа *foo*
-file \foo -> включить, начиная с foo
-file foo\ -> включить оканчивающийся на foo
-file \foo\ -> включить именно foo
-file .foo .bar -> выбрать файлы .foo и .bar
Примеры
sfk scantab -dir mydir1 mydir2 *include* -file foo bar .hpp
сканирует все файлы на наличие символов TAB
- в каталоге mydir1 и всех его подкаталогах
А ТАКЖЕ
- в каталоге mydir2 и всех его подкаталогах
ЕСЛИ
- 1. путь к файлу содержит слово "включать",
например, mydir1\core\include\foosys.hpp
- 2. имя файла содержит foo ИЛИ bar
- 3. или имя файла заканчивается на .hpp
sfk scantab -dir mydir1 !include -file !.tmp !.save
сканирует все файлы на наличие символов TAB в папке mydir1,
исключая все поддиректории, имеющие в своем названии слово «include»,
и исключая все файлы .tmp и .save.
sfk list -dir source include -subdir save !.svn -file .bak
перечислить файлы .bak из исходного дерева каталогов и включить,
внутри в подкаталогах, имеющих «сохранить» в своем имени,
за исключением подкаталогов, оканчивающихся на «.svn».
sfk list -dir source include *save !.svn -file .bak
то же, что и выше, но в формате компактного подкаталога:
маски включения subdir требуют подстановочного знака * в любом месте
чтобы было ясно, что они не являются корневыми каталогами.
Маски исключения subdir могут оставаться такими, какие они есть.
повторное использование набора файлов в сценариях:
чтобы разрешить повторное использование одного и того же -dir... -file...
параметры разными командами, эти опции существуют:
-root x префикс каждого параметра -dir на x,
затем удалите x в параметрах -dir, чтобы
сделать набор файлов совместимым для копирования/синхронизации
-using l use -dir ... -file ... текст, указанный в метке l.
текст в этой метке может содержать // примечания,
но нет переменных типа #(foo).
-checkdirs остановить, если указанные папки -dir не существуют
чтобы получить полный пример типа скрипта:
sfk batch mytest.bat для примера .bat для Windows
sfk batch mytest.sh для примера Cygwin/Linux .sh
3. выбор набора файлов с одним параметром:
некоторые команды, такие как find, filter или tail, не принимают полный
короткий формат, а только один файл или параметр dir, так как
было бы слишком сложно смешивать краткий формат с локальным
опции. подробнее об этом в локальной справке команды.
4. передача списков имен файлов в цепочках команд:
вместо выбора файлов в текущей команде вы можете использовать
список имен файлов, созданный предыдущей командой, например:
sfk выберите mydir .txt +detab=3
выбирает все файлы .txt из каталога mydir, затем передает
этот список файлов для отделения, где файлы отделены.
цепочка команд более интуитивно понятна, так как вы можете поиграть
с различными наборами файлов перед выполнением фактических изменений
на выбранных файлах.
sfk имена фильтров.txt +texttofilenames +list -late
при условии, что name.txt содержит список имен файлов,
эта цепочка команд перечисляет самые последние из этих файлов.
обратите внимание, что в этом случае неясно, передать ли
- имя файла "names.txt" или
- содержимое строки из names.txt
как имена файлов в "список", поэтому нам нужно вставить
+texttofilenames или +ttf для принудительного преобразования.
при поддержке:
некоторые команды. проверьте локальную справку каждой команды для получения дополнительной информации.
смотрите также
sfk help options общие параметры для большинства команд.
sfk list для получения дополнительных примеров выбора файлов. |
![]() |