我有一個文件列表和我想移動文件的文件夾列表。 換句話說,我有名爲:a_myfile.txt和名爲「a」的文件夾,然後是文件:b_myfile.txt和名爲「b」的文件夾,然後是c_myfile.txt和名爲「c」的文件夾。我想在名爲「a」的文件夾中移動文件a_myfile.txt,然後在名爲「b」的文件夾中移動名爲b_myfile.txt的文件,依此類推。我有一千個文件和一千個文件夾,因此不可能手動移動這些文件。根據文件和文件夾名稱移動文件夾中的文件名
誰能幫助我嗎?
最佳
F.
我有一個文件列表和我想移動文件的文件夾列表。 換句話說,我有名爲:a_myfile.txt和名爲「a」的文件夾,然後是文件:b_myfile.txt和名爲「b」的文件夾,然後是c_myfile.txt和名爲「c」的文件夾。我想在名爲「a」的文件夾中移動文件a_myfile.txt,然後在名爲「b」的文件夾中移動名爲b_myfile.txt的文件,依此類推。我有一千個文件和一千個文件夾,因此不可能手動移動這些文件。根據文件和文件夾名稱移動文件夾中的文件名
誰能幫助我嗎?
最佳
F.
使用循環,使用shell參數擴展來獲得FOLDERNAME,創建和移動文件。
for i in *.txt; do
mkdir -p "${i%%_*}"
mv "${i}" "${i%%_*}"
done
我會使用目錄迭代器類,但一些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);
}
注意:新文件夾將位於舊目錄中。您可以對其進行自定義以創建新文件夾並將其移動到您希望的文件夾中。
超級!非常感謝! – Fuv8