我正在使用一個我不熟悉的linux機器,所以我想從它的文件夾結構中獲得一個txt打印。我記得寫了一個腳本,在php中做了類似的事情,但找不到它。我正在尋找任何以下的,可以幫助我完成這個任務:使用bash或php獲取文件夾層次結構
- bash腳本
- 現有的Linux命令行
- PHP腳本
我正在使用一個我不熟悉的linux機器,所以我想從它的文件夾結構中獲得一個txt打印。我記得寫了一個腳本,在php中做了類似的事情,但找不到它。我正在尋找任何以下的,可以幫助我完成這個任務:使用bash或php獲取文件夾層次結構
find . -type d > dirstructure.txt
然而,在一個典型的Linux機器上,我寧願不從目錄根目錄運行。如果你這樣做,並得到一些權限錯誤,你可以發送錯誤到/dev/null
find . -type d > dirstructure.txt 2> /dev/null
如果你不想在目錄結構中過深,添加-maxdepth#也可能很有用。要只顯示兩個級別,它將是:'find。 -maxdepth 2 -type d' – Brett
試試這個嗎?
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
採取快速和骯髒的:
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;
}
}
你嘗試了'find'命令? – Mat