如何用单条Shell命令将指定文件复制到目标目录的100个子文件夹
实现单条Shell命令复制文件到多个子文件夹
没问题,一条Shell命令就能轻松完成这个复制需求,我给你两种实用的实现方式,你可以根据实际场景选择:
方式一:使用for循环(直观易读)
这条命令会直接遍历folder2下的所有直接子目录,然后将目标文件复制到每个目录中:
for dir in /home/name/domains/domainname.com/public_html/folder2/*/; do cp /home/name/domains/domainname.com/public_html/folder1/index.php "$dir"; done
- 解释:
*/用来匹配folder2下的所有子目录(避免匹配文件),"$dir"用双引号包裹是为了处理目录名包含空格的情况。
方式二:使用find命令(灵活可扩展)
如果需要更精细的目录过滤(比如排除某些特殊目录),可以用find命令实现:
find /home/name/domains/domainname.com/public_html/folder2 -maxdepth 1 -type d -not -path "*/folder2" -exec cp /home/name/domains/domainname.com/public_html/folder1/index.php {} \;
- 解释:
-maxdepth 1:限制只查找folder2下的直接子目录,不会递归到更深层级-type d:只筛选目录类型的对象-not -path "*/folder2":排除folder2目录本身,避免把文件复制到父目录里-exec ... {} \;:对每个找到的目录执行复制操作
小提示
如果担心误操作,可以先把命令里的cp换成echo cp,这样会先打印出要执行的复制动作,确认无误后再换回cp执行实际复制。
内容的提问来源于stack exchange,提问作者Titan
相关产品推荐
相关产品推荐

