Что все пути состоят в том, чтобы пересечь деревья каталогов?

Похоже, вы используете режим истории HTML5, вам может потребоваться отключить доступ к index.html в службе.

(и когда я посещаю https://ntest4.azurewebsites.net, не возвращаю разрешение.)

10
задан skiphoppy 30 January 2009 в 21:07
поделиться

7 ответов

В Python:

Если Вы ищете быструю, чистую, и портативную попытку решения:

import os
base_dir = '.'

def foo(arg, curr_dir, files):
  print curr_dir
  print files

os.path.walk(base_dir, foo, None)

Обратите внимание, что можно изменить нечто, чтобы сделать что-то еще вместо того, чтобы просто печатать имена. Кроме того, если Вы интересуетесь миграцией на Python 3.0, необходимо будет использовать os.walk () вместо этого.

7
ответ дан 3 December 2019 в 16:11
поделиться

В Java:

Рекурсия полезна здесь. Следующее является фрагментом кода Java, которым это было на всем протяжении Интернета целую вечность. Не уверенный, кто заслуживает кредита на него.

// Process all files and directories under dir

    public static void visitAllDirsAndFiles(File dir) {

        process(dir);  //do something useful with the file or dir

        if (dir.isDirectory()) {
            String[] children = dir.list();
            for (int i=0; i<children.length; i++) {
                visitAllDirsAndFiles(new File(dir, children[i]));
            }
        }
    }
6
ответ дан 3 December 2019 в 16:11
поделиться

На Linux с инструментами GNU

find -print0 | xargs -0 md5sum

или

find -print0 | xargs -0 -iASD echo 'this file "ASD" should be dealt with lile this (ASD)'
2
ответ дан 3 December 2019 в 16:11
поделиться

В C#:

Stack<DirectoryInfo> dirs = new Stack<DirectoryInfo>();

dirs.Push(new DirectoryInfo("C:\\"));

while (dirs.Count > 0) {
    DirectoryInfo current = dirs.Pop();

    // Do something with 'current' (if you want)

    Array.ForEach(current.GetFiles(), delegate(FileInfo f)
    {
        // Do something with 'f'
    });

    Array.ForEach(current.GetDirectories(), delegate(DirectoryInfo d)
    {
        dirs.Push(d);
    });
}
3
ответ дан 3 December 2019 в 16:11
поделиться

мммм, C# с дозой рекурсии.....

public static List<string> CrawlPath(string path, bool IncludeSubFolders)
{
    List<string> fileList = new List<string>();
    try
    {
        Stack<string> filez = new Stack<string>(Directory.GetFiles(path));
        while (filez.Count > 0)
        {
            fileList.Add(filez.Pop());
        }

        if (IncludeSubFolders)
        {
            filez = new Stack<string>(Directory.GetDirectories(path));
            while (filez.Count > 0)
            {
                string curDir = filez.Pop();
                fileList.AddRange(CrawlPath(curDir, IncludeSubFolders));
            }
        }
     }
     catch (System.Exception err)
     {
         Console.WriteLine("Error: " + err.Message);
     }
     return fileList;
  }
1
ответ дан 3 December 2019 в 16:11
поделиться

bash:

#!/bin/bash

function walk_tree {
      echo "Directory: $1"
      local directory="$1"
      local i
      for i in "$directory"/*; 
      do
      echo "File: $i"
        if [ "$i" = . -o "$i" = .. ]; then 
            continue
        elif [ -d "$i" ]; then  # Process directory and / or walk-down into directory
            # add command here to process all files in directory (i.e. ls -l "$i/"*)
            walk_tree "$i"      # DO NOT COMMENT OUT THIS LINE!!
        else
            continue    # replace continue to process individual file (i.e. echo "$i")
        fi
      done
}

walk_tree $HOME

(адаптировано из http://ubuntuforums.org/showthread.php?t=886272 Comment #4)

4
ответ дан 3 December 2019 в 16:11
поделиться

C++

#include <utility>
#include <boost/filesystem.hpp>
#include <boost/foreach.hpp>

#define foreach BOOST_FOREACH
namespace fs = boost::filesystem;

fs::recursive_directory_iterator it(top), eod;
foreach (fs::path const & p, std::make_pair(it, eod)) {
    if (is_directory(p)) {
        ...
    } else if (is_regular_file(p)) {
        ...
    } else if (is_symlink(p)) {
        ...
    }
}
3
ответ дан 3 December 2019 в 16:11
поделиться
Другие вопросы по тегам:

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