2014-01-27 235 views
0

我有一个文件列表和我想移动文件的文件夹列表。 换句话说,我有名为:a_myfile.txt和名为“a”的文件夹,然后是文件:b_myfile.txt和名为“b”的文件夹,然后是c_myfile.txt和名为“c”的文件夹。我想在名为“a”的文件夹中移动文件a_myfile.txt,然后在名为“b”的文件夹中移动名为b_myfile.txt的文件,依此类推。我有一千个文件和一千个文件夹,因此不可能手动移动这些文件。根据文件和文件夹名称移动文件夹中的文件名

谁能帮助我吗?

最佳

F.

回答

1

使用循环,使用shell参数扩展来获得FOLDERNAME,创建和移动文件。

for i in *.txt; do 
    mkdir -p "${i%%_*}" 
    mv "${i}" "${i%%_*}" 
done 
+0

超级!非常感谢! – Fuv8

0

我会使用目录迭代器类,但一些PHP安装没有安装SPL。所以我只会使用全局解决方案。

下面是一些代码,将扫描目录和文件名,将它们存储在数组中,然后检查下划线之前的第一个字符,然后相应地移动它。

$directory = '/path/to/my/directory'; 
//to get rid of the dots that scandir() picks up in Linux environments 
    $scanned_directory = array_diff(scandir($directory), array('..', '.')); 

    foreach($scanned_directory as $filename) 
    { 
    $f = explode("_", $filename); 
    $foldername = $f[0]; 

//Create directory if it does not exists 
    if (!file_exists($foldername)) { 
     @mkdir($foldername); 
    } 

//Move the file to the new directory 
    rename($directory. "/". $filename, $directory. "/". $foldername. "/". $filename); 


    } 

注意:新文件夹将位于旧目录中。您可以对其进行自定义以创建新文件夹并将其移动到您希望的文件夹中。

相关问题