寻找Shell脚本来查找“.txt”、“.csv”来自许多递归文件夹/子文件夹的文件,复制文件并重新创建相同的文件夹路径以将这些文件复制到新路径中。
示例:我们获得了大约 20k 个文件,并保存在许多父文件夹和子文件夹中。
来源:u01/temp/proj/sales/john/.csv, .xls 文件
u01/temp/proj/sales/mike/.txt、.csv, .xls 文件
u01/temp/proj/sales/geebee/sale/.csv, .xls 文件
需要shell脚本来复制仅“.txt”、“.csv”文件(不包括 xls 和其他文件)并重新创建相同的文件夹路径,然后复制上述文件,如下所示
u01/烫发/项目/销售/约翰/.csv文件
u01/perm/proj/sales/mike/.txt、.csv文件
u01/perm/proj/sales/geebee/sale/.csv文件
谢谢。
答案1
您可以使用 rsync 来完成此操作。如果您只想从源目录中获取 .txt 和 .csv 文件,则可以仅将这些文件及其关联的目录结构复制到目标。
例如:
rsync -av --include="*/" --include="*.csv" --include="*.txt" --exclude="*" u01/temp/ u01/perm/
如果您想执行相反的操作并执行诸如复制除“.json”和“.xlsx”之外的所有文件之类的操作,则可以在命令调用中使用“--exclude”,如下所示:
rsync -avz --exclude="*.json" --exclude="*.xls" --exclude="*.xlsx" u01/temp/ u01/perm/