我需要定期从一组特定的源子目录(其中有100个)将文件复制到一个“扁平”目录结构中,即我希望从我似乎无法找到可以查看源子目录的复制方法&复制不会在目标目录中重新创建子目录文件夹结构的文件。Solaris将多个目录中的文件复制到一个目录中
任何帮助理解。
我需要定期从一组特定的源子目录(其中有100个)将文件复制到一个“扁平”目录结构中,即我希望从我似乎无法找到可以查看源子目录的复制方法&复制不会在目标目录中重新创建子目录文件夹结构的文件。Solaris将多个目录中的文件复制到一个目录中
任何帮助理解。
sourcedir=/root/of/subdirectory/set
destdir=/where/the/files/go
find $sourcedir -type f -print | while read file; do cp $file $destdir; done
或(防止重写)
find $sourcedir -type f -print | while read file; do base=$(basename $file); test -f $destdir/$base || cp $file $destdir; done
注意,如果$ sourcedir中的任何文件或子目录的名称都包含空格,这将不起作用。
Hey-那很棒:)谢谢! – user3047191
'find $ sourcedir -type f -exec cp'{}'$ destdir \;'是简写:) –
右:)我更喜欢循环方法,因为在大多数情况下,我想做一些类似于no-覆盖检查,并且在循环中比在find的奇怪-exec语法中更容易。 –
在shell中,通常它足以执行类似'cp */* destination'的操作。 – opalenzuela