使用正则表达式复制文件并保持目录结构

Copy files with regexp and keep the directory structure

我有一个包含子文件夹和文件的文件夹。 我使用以下代码将文件从一个地方复制到另一个地方,而没有像 data.0001 或 data.00001 这样的文件 ...

find . ! -iregex ".*\.[0-9][0-9][0-9][0-9].*" -exec cp {} /destination/folder/ \;

问题是所有文件都被复制到同一个目录中。我怎么解决这个问题?非常感谢。

是的,试试这个镜头:

find . ! -iregex ".*\.[0-9][0-9][0-9][0-9].*" -type f -exec \
  install -D "{}" "/destination/folder/{}" \;

如果您要查找文件,请注意 type f。如果您要查找目录,请将 'f' 替换为 'd'。