需求:复制文件夹到Linux目录下,覆盖该Linux目录下所有同名文件夹 目标:Linux下,执行本脚本,输入文件夹名,即可批量复制覆盖。 使用说明: 先把本脚本文件和要复制的文件夹移到将要覆盖的Linux目录,之后执行本脚本即可。 执行命令: ./tcopy.sh 1.如果提示-bash: ./tcopy.sh: Permission denied,那要先赋给其权限: chmod +x tcopy.sh 再执行./tcopy.sh即可。 2.觉着麻烦的话 sh tcopy.sh也行。
		逻辑说明: 原系统的cp命令,是cp -i命令,这样执行cp命令是无法自动覆盖的。所以改文件~/.bashrc,最后再改回。 读取用户输入文件名,用通配符把全文件夹放于数组 循环结构把原文件夹下所有文件放入所有数组。
		代码:
		
			
				
					?
				
					
						
							| 
									1 
									2 
									3 
									4 
									5 
									6 
									7 
									8 
									9 
									10 
									11 
									12 
									13 
									14 
									15 | 
									
										#!/bin/sh  
										sed -i 's/alias cp/#&/'~/.bashrc  >/dev/null 
										  
										echo "Please input the filename:" 
										read name  
										array=($name*)  
										name2="$name/*" 
										  
										for((i=1; i<${#array}; i++))  
										do 
										cp -r $name2 ${array[$i]}  
										done  
										  
										sed -i "/#alias cp/i\alias cp='cp -i'"~/.bashrc  >/dev/null 
										sed -i '/#alias cp/d'~/.bashrc  >/dev/null | 
					
				
			 
		 
		保存文件为tcopy.sh
		代码说明:
		
			
				
					?
				
					
						
							| 
									1 | 
									
										sed -i 's/alias cp/#&/'~/.bashrc  >/dev/null | 
					
				
			 
		 
		把~/.bashrc文件中的alias cp一行给注释掉
		
		使用通配符把所有文件夹放入数组
		
		name2为原文件夹目录下所有文件
		
		获取数组长度
		
			
				
					?
				
					
						
							| 
									1 | 
									
										cp -r $name2 ${array[$i]} | 
					
				
			 
		 
		复制文件
		
		
sed -i "/#alias cp/i\alias cp='cp -i'" ~/.bashrc >/dev/null sed -i '/#alias cp/d' ~/.bashrc >/dev/null
		
		改回~/.bashrc文件
		风险项: 原~/.bashrc文件未必是alias cp='cp -i'
		如果使用本脚本后,出现复制文件每次都询问是否覆盖即:cp: overwrite, 请手动修改~/.bashrc文件,在alias cp一行的前方加上#