2014-08-27 49 views
0

我試圖自動將所有文件從folder2移動到folder1中,並帶有大量重複的文件名。BASH:按大小或日期自動移動重複的文件名

如果文件名匹配,我想根據文件大小和/或日期刪除或移動/替換文件夾2中的文件。基本上對於重複的文件名,如果file2比file1更新或更大,我想移動/替換。否則,刪除file2。

如果file2文件名是唯一的,只需移動它。

我知道我可以用「mv -u/source/*/destination」做一部分,但似乎沒有大小參數。

在此先感謝。

回答

0

解決方案並不困難。只需按照您需要的順序進行測試,或者使用copydelete

#!/bin/bash 

for i in folder_2/*; do 

    [ -f "folder_1/${i##*/}" ] && \         # test if duplicate 
    [ "$i" -nt "folder_1/${i##*/}" ] && \       # test newer than 
    [ $(stat -c%s "$i") -gt $(stat -c%s "folder_1/${i##*/}") ] && \ # test bigger than 
    cp -a "$i" folder_1 || \           # if so copy/replace 
    rm "$i"               # if no delete 

done