脚本找到所有.h文件并放入具有相同结构的指定文件夹?

时间:2013-12-06 04:04:42

标签: bash shell bsd

我需要像

这样的bash脚本

header~ / headers-folder~ / output-folder

所以它递归地找到〜/ headers-folder中的所有.h文件并将它们全部放在〜/ output-folder中并保持文件夹层次结构?

谢谢!

2 个答案:

答案 0 :(得分:5)

find /path/to/find -name "*.h" -type f | xargs -I {} cp --parents {} /path/to/destination

检查一下。

答案 1 :(得分:2)

rsync也很棒:

rsync --include '*.h' --filter 'hide,! */' -avm headers-folder/ output-folder/

这将复制所有*.h个文件,并仅创建必要的目录。


示例:

mkdir -p headers-folder/{subdir,empty}
touch headers-folder/foo.h
touch headers-folder/subdir/foo.h

tree headers-folder

# headers-folder/
# |-- empty
# |-- foo.h
# `-- subdir
#     `-- foo.h

rsync --include '*.h' --filter 'hide,! */' -avm headers-folder/ output-folder/

tree output-folder

#  output-folder/
#  |-- foo.h
#  `-- subdir
#      `-- foo.h