древовидная команда для нескольких включает и исключает

Команда

$ cat * > merged-file

на самом деле имеет нежелательный побочный эффект включения 'объединенного файла' в конкатенации, создавая безудержный файл. Обойти это, любая запись объединенный файл к другому каталогу;

$ cat * > ../merged-file

или используйте соответствие шаблона, которое проигнорирует объединенный файл;

$ cat *.txt > merged-file
33
12.01.2013, 21:27
3 ответа

Один путь состоит в том, чтобы использовать шаблоны с -I и -P переключатели:

tree -f -I "bin|unitTest" -P "*.[ch]|*.[ch]pp." your_dir/

-f печатает полный путь для каждого файла, и -I исключает файлы в шаблоне, здесь разделенном вертикальной панелью. -P переключатель включает только файлы, перечисленные в сопоставлении с образцом определенное расширение.

54
27.01.2020, 19:37
  • 1
    Отметьте: не включайте запаздывание наклонных черт в Ваш флаг-I, например, -I bin, нет -I bin/. –  ThorSummoner 11.03.2015, 20:13

использовать find и tree команда, которая является находкой использования prune исключить каталоги поиска и использования tree -P для поиска шаблона.

Используйте переключатель чернослива, например, если Вы хотите исключить misc каталог просто добавляет a -path ./misc -prune -oк Вашей команде находки.

для, например.find . -path ./misc -prune -o -exec tree -P <pattern> {} \; или можно использовать -name "*.cpp" in find

поскольку, исключая нескольких использование каталогов

find . -type d \( -path dir1 -o -path dir2 -o -path dir3 \) -prune -o

4
27.01.2020, 19:37

Истинное решение - вывод полные пути, отфильтруйте нежелательные пути и, наконец, исправьте выходы.

tree -df | egrep -v "\./(bin|unitTest)/.*" | sed -r 's%\./.*/%%g'

Если в выводе необходимы все файлы, удалите параметр «d».

Подробное объяснение можно найти по адресу: http://qaon.net/press/archives/572 , если вы понимаете по-японски.

2
27.01.2020, 19:37

Теги

Похожие вопросы