0

何千ものサブフォルダーを含むディレクトリがあります。各サブフォルダーに、そのサブフォルダー内のすべてのファイルを一覧表示するテキスト ファイルを自動作成したいと考えています。Ubuntu 10.04 で実行していますが、javascript または php でこれを行うにはどうすればよいですか?

4

4 に答える 4

3

シェルでは、これは単一のコマンドです (ただし、他のコマンドが埋め込まれています)。

find /start/path -type d -exec sh -c "ls {} > {}/files.txt" \;

これを別の言語で本当に必要とする場合は、要件を明確にしてください。

于 2012-10-16T11:53:16.823 に答える
1

これはphpのJOBではありません..実験目的でこれを使用できます:

$di = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::SELF_FIRST);
foreach ( $di as $file ) {
    $name = $file->getPathInfo() . "/files.txt";
    touch($name);
    file_put_contents($name, $file->getFilename() . PHP_EOL, FILE_APPEND);
}

テキストファイルを削除したい場合は、いつでも実行できます

foreach ( $di as $file ) {
    $name = $file->getPathInfo() . "/files.txt";
    is_file($name) AND unlink($name);
}
于 2012-10-16T11:57:50.650 に答える
0

これは、scandir を使用して再帰的な PHP 関数を記述することで実現できます。PHP scandir の詳細については、これを確認してください

于 2012-10-16T12:35:45.670 に答える
0

各ディレクトリ内にファイル「files.txt」を作成し、そのフォルダーにすべてのファイル名を配置するサンプルphpコードです(フォルダー名は追加されません)。すべてのフォルダーへの書き込み権限があることを確認してください。

function recursive($directory)
{
    $dirs = array_diff(scandir($directory), Array( ".", ".." ));
    $dir_array = array();

    foreach($dirs as $d)
    {
        if(is_dir($directory."/".$d)){
            $dir_array[$d] = recursive($directory."/".$d);
        }
        else{
            $dir_array[$d] = $d;
            $fp = fopen("$directory/files.txt","a");
            fwrite($fp,"\n$d");
        }
    }
}   

recursive($start_directory);
?>
于 2012-10-16T11:57:03.007 に答える