
我有一個資料夾全部包含
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
一種方法是使用find
and cp
:
find . -iname '*20170315*' -exec cp --parents {} /tmp/Folder_20170315 \;
目標資料夾必須已存在。如果您願意,您也可以編寫其建立腳本。
看起來您想檢查文件名,但find
也可以用於檢查文件日期。
答案2
由於cp --parents
Mac上不可用,我使用了兩個命令來解決類似的問題:
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
是效能瓶頸,您將需要進一步優化。例如,您可以將操作移至函數中。