2012-08-22 60 views
0

我有批處理文件移至

  • 文件夾-A
    • 文件夾,子文件夾A1(遞歸)(< - 在它的文件)
    • 文件夾-A2(< - 文件在它)
  • 文件夾-B
    • 夾-B1(< - 文件中我T)
    • 文件夾-B2(< - 文件進去)

我有什麼想了解

  • 文件夾-A
    • 文件夾-A1
      • Folder-A1子文件夾(< - 移動文件)
    • 夾-A2
      • 夾-A2-子文件夾(< - 移動在它的文件)
  • 文件夾-B
    • 夾-B1
      • 文件夾 - B1子文件夾(< - 移動文件)
    • 文件夾-B2
      • 文件夾-B2-子文件夾(< - 感動於它的文件)

起初看起來比較複雜。但我想要做的只是將文件夾移動到同一文件夾下的一個文件夾中(如果子文件夾包含其父文件夾的名稱,則必須創建子文件夾)。

有什麼辦法可以用bash命令做到嗎?還是應用程序? 希望你有一些的竅門,我:-)

回答

1

這可以在bash一行程序與find來完成(它可能可以使這更容易/更小,但我沒有shell大師):

find . -type f -exec bash -c 'mv {} $(dirname {})/$(basename $(dirname {}))-Subfolder/$(basename {})' \;` 

(查找所有非目錄文件,將它們從原始位置移動到'foldername/foldername-Subfolder/filename'。這必須與bash -c完成,因爲子shell否則將首先評估)

您需要執行的命令,它可以與其他的發現來完成之前創建子文件夾:

find . -type d ! -iname "*-Subfolder" -exec bash -c 'mkdir {}/$(basename {})-Subfolder' \; 
+0

你真好!我稍後會在家裏嘗試。非常感謝! – suntrop

+0

沒問題:)讓我知道它是否適合你。 – l4mpi

+0

對我來說工作得很好:-) 「創建子文件夾」命令有一個'在它的最後,我不得不刪除它的工作。它也爲Folder-A和Folder-B創建了一個子文件夾,但這不是問題,因爲這個級別上只有29個文件夾,所以我可以手動刪除它們。再次感謝! – suntrop