![从多个子目录复制多个类似文件](https://linux22.com/image/1485340/%E4%BB%8E%E5%A4%9A%E4%B8%AA%E5%AD%90%E7%9B%AE%E5%BD%95%E5%A4%8D%E5%88%B6%E5%A4%9A%E4%B8%AA%E7%B1%BB%E4%BC%BC%E6%96%87%E4%BB%B6.png)
我有 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 \;