2015-12-11 273 views
0

我從S3下載了大量文件,將它們全部轉儲到名爲contracts的新文件夾中。現在,在合同中,每一個文件是在它自己的命名(如數字)的文件夾,即5566將文件從子文件夾移動到父文件夾中

尋找一個腳本來採取所有這些子文件夾中的所有文件,將它們移動到父文件夾(/合同),然後刪除空的文件夾。

回答

1
yes | cp -a /contract/*/* /contract 

/contract表示您的合同目錄位於/但您可以更改所需的路徑,例如,

這是從和到路徑。如果您想移動而不是複製,請注意將cp更改爲mv。你的情況,這將工作yes | cp -a contracts/*/* contracts

+0

謝謝。但我得到'cp:/ contracts/*/*:沒有這樣的文件或目錄' –

+0

編輯:它工作刪除反斜槓,如:'是| CP -A合約/ */*合約「。請編輯您的答案,我將標記爲正確的答案。謝謝! –

+0

我編輯過。請標記我的回答 – Ghayel

2

我會做(從外面的contracts):

mkdir contracts2 #create a sister folder 
find contracts -type f -print0 | #find all files in contracts 
    xargs -0 -I{} cp -l {} contracts2/ #hardlink them flatly to contracts2 

現在,如果一切正常(與tree contracts2檢查),你可以 rm -rf contractsmv contracts2 contracts

這應該是非常快速(硬鏈接速度非常快,它可能只執行cp的一個實例)並且安全(直到您運行rm -rf之前,您不會丟失原始目錄)。

1

你可以用-exec選項使用findmv將所有文件一起:

find /path/to/contracts -type f -exec mv -i '{}' /path/to/contracts \; 

通過提供-i選項mv,它將具有相同名稱覆蓋文件之前提示。如果有許多名稱相同的文件,則可能需要創建一個簡短腳本來即時重命名文件以避免用戶交互。

相關問題