Команда
$ cat * > merged-file
на самом деле имеет нежелательный побочный эффект включения 'объединенного файла' в конкатенации, создавая безудержный файл. Обойти это, любая запись объединенный файл к другому каталогу;
$ cat * > ../merged-file
или используйте соответствие шаблона, которое проигнорирует объединенный файл;
$ cat *.txt > merged-file
Один путь состоит в том, чтобы использовать шаблоны с -I
и -P
переключатели:
tree -f -I "bin|unitTest" -P "*.[ch]|*.[ch]pp." your_dir/
-f
печатает полный путь для каждого файла, и -I
исключает файлы в шаблоне, здесь разделенном вертикальной панелью. -P
переключатель включает только файлы, перечисленные в сопоставлении с образцом определенное расширение.
использовать 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
Истинное решение - вывод полные пути, отфильтруйте нежелательные пути и, наконец, исправьте выходы.
tree -df | egrep -v "\./(bin|unitTest)/.*" | sed -r 's%\./.*/%%g'
Если в выводе необходимы все файлы, удалите параметр «d».
Подробное объяснение можно найти по адресу: http://qaon.net/press/archives/572 , если вы понимаете по-японски.
-I bin
, нет-I bin/
. – ThorSummoner 11.03.2015, 20:13