从多个子目录复制多个类似文件

从多个子目录复制多个类似文件

我有 100 个子目录,每个子目录中包含 1 个感兴趣的文件。我想将这 100 个感兴趣的文件 (*file_of_interest.txt) 复制到一个新文件夹中。如何使用 shell 脚本执行此操作?

答案1

我会做这样的事:

for i in *; do mv $i/files_of_interest.txt ../new_interest_folder; done

请注意,如果感兴趣的文件是集合,例如所有 .png 文件,则这应该有效:

for i in *; do mv $i/*.png ../new_png_folder; done

'in' 后面的 * 可以用任何其他 shell glob 替换。弄清楚会发生什么的好方法是回显以下内容:

for i in *folderx *foldery; do echo mv $i/*.png ../new_png_folder; done

如果这产生了您想要运行的命令列表,请返回并从该行中删除“echo”,然后再次运行它。

“*folderx *foldery” 组合将生成以“folderx”或“foldery”结尾的所有文件夹的列表

答案2

脚本怎么样

#! /bin/bash
find /path/to/root -type -f -name "*.txt" -exec cp {} /target/directory \;

相关内容