2017-01-19 81 views
0

我需要查找目錄中的所有文件,它是子目錄,但我需要保留目錄結構。比如有一個文件遞歸查找並複製到其他目錄

/media/subdir1/subdir2/file.jpg 

,我想將它複製到

/new-media/subdir1/subdir2/file.jpg 

和相同的所有文件在/媒體/目錄。順便說一下,如果不存在,則必須創建/ new-media /中的目錄。

如果我使用

find /media/ -name '*.jpg' -exec cp /new-media/ ????? {} \; 

我怎樣才能得到裏面的所有子目錄/媒體/?

+0

是'CP-R /媒體/新媒體「你想要什麼?如果不是,爲什麼不呢? – trentcl

回答

2

以上將讓你在/媒體的一切,但要得到你想要的,你可能想使用類似正是:

方法1:複製只有你所需要的遞歸,根據您的要求:

mkdir ../media2; find . -name "*.jpg" -exec cp -r --parents {} ../media2 \; 

我從你想要遞歸搜索的目錄中運行這個。它做了幾件事情:

1 - 創建新的目標目錄

mkdir ../media2 

2 - 然後查找以 「.jpg」 遞歸結尾的文件。

find . -name "*.jpg" 

3 - 使用-exec通過copy命令將每個文件返回找到的匹配,以及潛艇在作爲第一個參數(與CP的語法,將是你的源文件):

-exec cp -r --parents {} ../media2 \; 

「--parents」標誌保留現有目錄結構並遞歸地創建後續父目錄。超級有用的權利?方法2:可能有更好的方法來用xargs做到這一點,但上面的結果是最簡單的方法imho。這就是說,如果你想的條條框框,你可以簡單地將整個目錄拷貝過來遞歸,然後用像刪除任何以「.jpg」沒有不散:

cp -r media media2; find ./media '!'-name "*.jpg" -type f | xargs rm 
1

我想這是你想要什麼:

cp -r /media /new-media 

-R,-r,--recursive
拷貝目錄遞歸

希望這有助於。

相關問題