如何將所有匹配模式的檔案複製到匹配相同結構的新資料夾樹中

如何將所有匹配模式的檔案複製到匹配相同結構的新資料夾樹中

我有一個資料夾全部包含

AllFolders
    F1
        some_file_20170315_xyz.txt
        some_file_20170314_xyz.txt
        ....
    F2
        some_other_file_20170315_abc.txt
        some_other_file_20170314_abc.txt
        ...
    ...
    Fn 

如何將與特定日期相符的所有檔案複製到不同的空資料夾,以便資料夾結構也被複製並且看起來像

Folder_20170315
    F1
        some_file_20170315_xyz.txt
    F2
        some_other_file_20170315_abc.txt

答案1

一種方法是使用findand cp

find . -iname '*20170315*' -exec cp --parents {} /tmp/Folder_20170315 \;

目標資料夾必須已存在。如果您願意,您也可以編寫其建立腳本。

看起來您想檢查文件名,但find也可以用於檢查文件日期。

答案2

由於cp --parentsMac上不可用,我使用了兩個命令來解決類似的問題:

find . -name '*.example' | xargs -I FOO dirname FOO | xargs -I FOO mkdir -p /new/root/directory/FOO
find . -name '*.example' | xargs -I FOO cp FOO /new/root/directory/FOO

第一個指令建立目錄樹。第二個複製文件。

這假設速度find很快。如果find是效能瓶頸,您將需要進一步優化。例如,您可以將操作移至函數中。

相關內容