2014-09-01 39 views
0

我有一個名爲「in」的文件夾,其中包含幾個文件夾「a」「b」「c」,我想將所有文件移動到文件夾「proc」並壓縮它們。這個棘手的部分是「in/a」中的文件必須移動到「proc/a」,「in/b」必須移動到「proc/b」等等 我設法查找所有文件和zip他們白衣這個命令Unix遞歸移動所有文件但保持結構

find . -type f ! \(-name "*gz" -o -name "*tmp" -o -name "*xftp" \) -exec gzip -n '{}' \; 

但我沒有找到一個通用的命令來移動工作白斑告訴我的文件夾名稱的文件。任何人都可以幫我一把嗎?

+0

'對於b c d中的d;在/ $ d proc/$ d中執行mv; done'? – 2014-09-01 09:03:10

+0

sory這些文件夾的隨機名稱不盡相同,不是a,b,c等命令必須是通用的 – 2014-09-01 09:16:20

+0

然後使用例如'find'獲取循環的目錄列表? – 2014-09-01 09:18:04

回答

0

嗯,我最終找到了我有例如一對夫婦更多的問題,不存在目標文件夾,所以我結束了使用此代碼

find . -type f ! \(-name "*gz" -o -name "*tmp" -o -name "*xftp" \) -exec gzip -n '{}' \; 
find . -name "*.gz" | cpio -p -dumv $1 
if [ "$?" = "0" ]; then 
    find . -name "*.gz" -exec rm -rf {} \; 
else 
    echo "cpio Failed!" 1>&2 
    exit 1 
fi 

一號線找到所有要處理的文件和拉鍊他們。 第二行查找所有文件和副本到目標目錄,在我的情況下它是$ 1(參數1),根據需要創建儘可能多的文件夾以確保相同的結構。 第三行檢查最後一個命令的狀態,如果它找到並從源文件夾中刪除所有gz文件刪除任何文件夾。如果它沒有刪除任何東西,我可以分析發生了什麼(可能用完空間)

我敢打賭,有一個更快捷的方式來做這個白癜風不得不使用這麼多的磁盤空間,但因爲這對我來說不是問題看起來可以接受。

相關問題