我有一个包含数千个子文件夹的目录。我想让它在每个子文件夹中自动创建一个文本文件,列出该子文件夹中的所有文件。我在Ubuntu 10.04上运行如何在javascript或php中执行此操作?
答案 0 :(得分:3)
在shell中,它是一个命令(虽然嵌入了其他命令):
find /start/path -type d -exec sh -c "ls {} > {}/files.txt" \;
如果您真的需要另一种语言,请澄清您的要求。
答案 1 :(得分: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);
}
答案 2 :(得分:0)
它是一个示例php代码,它将在每个目录中创建一个文件“files.txt”,并将所有文件名放在该文件夹中(不会添加文件夹名称)。确保您拥有所有文件夹的写入权限
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);
?>
答案 3 :(得分:0)
您可以通过使用scandir编写递归PHP函数来实现此目的。 有关PHP scandir的更多帮助,check this