我有一个文件夹全部
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
是性能瓶颈,您将需要进一步优化。例如,您可以将操作移到一个函数中。