我可以將許多單獨的子目錄/資料夾中的許多檔案批次移動到 Windows 中的一個主目錄嗎?

我可以將許多單獨的子目錄/資料夾中的許多檔案批次移動到 Windows 中的一個主目錄嗎?

我在這樣的位置有大量文件:

C:/Users/(Username)/Desktop/(Parent-Collection name)/(filename1)/(filename1).ext

.../(filename2)/(filename2).ext

.../(filename3)/(filename3).ext

我正在嘗試將.ext文件批量移動到父資料夾,因此它是:

C:/Users/(Username)/Desktop/(Parent-Collection name)/(filename1).ext

從本質上消除了對子資料夾的需要,就像從學校活頁夾中取出分隔線一樣。

答案1

你可能需要這樣做西格溫,我會推薦給任何(仍然?)運行 M$ Windoze 間諜軟體的人。

像這樣的東西應該​​要有效。在目錄中執行它C:/Users/(Username)/Desktop/(Parent-Collection name)/(在 cygwin 中稱為/cygdrive/c/Users/(Username)/Desktop/(Parent-Collection name)/)

for i in `find . -name "*" -type f`; 
    do mv $i `echo $i | sed 's/.*\/\([^/]*\)/\1/'`; 
done

這會將下面所有目錄中的所有檔案移動(Parent-Collection name)(Parent-Collection name).具體來說,這是一個do循環,索引i從當前目錄開始循環遍歷每個檔案。這就是find命令列出的內容。您可以透過運行來查找語法man find。然後您執行的操作是將mv檔案 ( ) 移動 ( $i) 到新位置。此新位置由echo $i透過串流編輯器(sed您可以使用 進行查找)運行的原始檔案名稱 ( ) 指定,串流編輯man sed器設定為剝離路徑,保留基本檔案名稱。

我建議對其進行測試(建立一個包含幾個子目錄的目錄,其中包含一些空白文字檔案或其他內容)並確保有備份!

然後,您可能想要刪除目前目錄下的所有(現在為空)目錄:

for i in `find . -name "*" -type d`; 
    do rmdir $i; 
done

這裡唯一不同的是,您要find尋找目錄 ( -type d) 而不是檔案 ( -type f),然後刪除這些目錄(rmdir,僅適用於空目錄)。

linux不是很酷嗎? Cygwin 為您提供了 Linux 的一些強大功能,並且可能是讓您足夠熟悉它的第一步,有一天您甚至可能會發現它可以遷移到 Ubuntu 之類的東西。 :)

答案2

這可以使用 Powershell 來完成,儘管我們不知道您使用的是哪個版本的 Windows。

$sourcefolder = "C:\Users\username\Desktop\ParentCollectionName"

$allfiles = Get-ChildItem -Recurse $sourcefolder | Where-Object {$_.PSIScontainer -eq $false}
ForEach ($file in $allfiles)
    {
        $destinationfolder = Split-Path -Parent $file.Directory.FullName
        Move-Item $file.FullName $destinationfolder
    }

子目錄中的所有檔案$sourcefolder都會移動到該ParrentCollectionName資料夾中。然後您可以刪除空的子資料夾。

來源

相關內容