我有一个文件列表和一个文件夹列表,我想在其中移动文件。
换句话说,我的文件名为:a_myfile.txt和名为“a”的文件夹,然后是文件:b_myfile.txt和名为“b”的文件夹,然后是c_myfile.txt和名为“c”的文件夹。我想将文件a_myfile.txt移动到名为“a”的文件夹中,然后将名为b_myfile.txt的文件移动到名为“b”的文件夹中,依此类推。我有数千个文件和数千个文件夹,因此无法手动移动这些文件。
答案 0 :(得分:1)
使用循环,使用shell参数扩展来获取 foldername ,创建它并移动文件。
for i in *.txt; do
mkdir -p "${i%%_*}"
mv "${i}" "${i%%_*}"
done
答案 1 :(得分: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);
}
注意:新文件夹将位于旧目录中。您可以对其进行自定义,以创建新文件夹并将其移动到您希望轻松的文件夹中。