我正在使用我不熟悉的 linux 机器,所以我想从它的文件夹结构中得到一个 txt 打印。我记得曾经编写过一个在 php 中执行类似操作的脚本,但找不到它。我正在寻找以下任何可能帮助我完成此任务的内容:
- 一个 bash 脚本
- 现有的 linux 命令行
- 一个php脚本
find . -type d > dirstructure.txt
但是,在典型的 linux 机器上,我宁愿不从目录根目录运行它。如果您这样做并获得了一些权限错误,您可以将错误发送到/dev/null
find . -type d > dirstructure.txt 2> /dev/null
又快又脏:
class Crawl_directory
{
public $exclude = array();
public $paths = array();
public $tree = FALSE;
public $tree_str = FALSE;
public function __construct($path, $exclude = array())
{
if ( !$path || !is_dir($path) )
return FALSE;
$this->exclude = array_merge(array(), $exclude);
$this->tree = $this->crawl($path);
$this->tree_str = $this->create_tree($this->tree);
}
public function crawl($path)
{
$arr = array();
$items = scandir($path);
$this->paths[] = $path;
foreach ( $items as $k => $v ) {
if ( !in_array($v, $this->exclude) && $v != '.' && $v != '..' ) {
if ( is_dir($path.'/'.$v) ) {
$arr[$v] = $this->crawl($path.'/'.$v);
} else {
$arr[$v] = '';
}
}
}
return $arr;
}
function create_tree($arr)
{
$out = '<ul>'."\n";
foreach ( $arr as $k => $v ) {
$out .= '<li class="'.((is_array($v)) ? 'folder' : 'file').'">'.$k.'</li>'."\n";
if ( is_array($v) ) {
$out .= $this->create_tree($v);
}
}
$out .= '</ul>'."\n";
return $out;
}
function get_tree()
{
return $this->tree;
}
function print_tree()
{
echo $this->tree_str;
}
}
试试这个?
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'