我有 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 \;