我從S3下載了大量文件,將它們全部轉儲到名爲contracts
的新文件夾中。現在,在合同中,每一個文件是在它自己的命名(如數字)的文件夾,即55
,66
等將文件從子文件夾移動到父文件夾中
尋找一個腳本來採取所有這些子文件夾中的所有文件,將它們移動到父文件夾(/合同),然後刪除空的文件夾。
我從S3下載了大量文件,將它們全部轉儲到名爲contracts
的新文件夾中。現在,在合同中,每一個文件是在它自己的命名(如數字)的文件夾,即55
,66
等將文件從子文件夾移動到父文件夾中
尋找一個腳本來採取所有這些子文件夾中的所有文件,將它們移動到父文件夾(/合同),然後刪除空的文件夾。
yes | cp -a /contract/*/* /contract
/contract表示您的合同目錄位於/但您可以更改所需的路徑,例如,
這是從和到路徑。如果您想移動而不是複製,請注意將cp更改爲mv。你的情況,這將工作yes | cp -a contracts/*/* contracts
我會做(從外面的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 contracts
和mv contracts2 contracts
。
這應該是非常快速(硬鏈接速度非常快,它可能只執行cp
的一個實例)並且安全(直到您運行rm -rf
之前,您不會丟失原始目錄)。
你可以用-exec
選項使用find
和mv
將所有文件一起:
find /path/to/contracts -type f -exec mv -i '{}' /path/to/contracts \;
通過提供-i
選項mv
,它將具有相同名稱覆蓋文件之前提示。如果有許多名稱相同的文件,則可能需要創建一個簡短腳本來即時重命名文件以避免用戶交互。
謝謝。但我得到'cp:/ contracts/*/*:沒有這樣的文件或目錄' –
編輯:它工作刪除反斜槓,如:'是| CP -A合約/ */*合約「。請編輯您的答案,我將標記爲正確的答案。謝謝! –
我編輯過。請標記我的回答 – Ghayel