Linux下把文件夹复制到所有同名文件夹的脚本

需求:复制文件夹到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,最后再改回。

读取用户输入文件名,用通配符把全文件夹放于数组

循环结构把原文件夹下所有文件放入所有数组。

代码:

#!/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

代码说明:

sed -i 's/alias cp/#&/' ~/.bashrc  >/dev/null

把~/.bashrc文件中的alias cp一行给注释掉

array=($name*)

使用通配符把所有文件夹放入数组

name2="$name/*"

name2为原文件夹目录下所有文件

${#array}

获取数组长度

cp -r $name2 ${array[$i]}

复制文件

<pre name="code" class="cpp" style="font-size: 14px; line-height: 21px;">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一行的前方加上#

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-15 05:18:47

Linux下把文件夹复制到所有同名文件夹的脚本的相关文章

linux下把log4cxx封装成so动态库文件(一)

这是一个经常遇到的问题,在软件开发过程中,需要将某些功能封装成一个独立的模块,这样维护升级也很方便.现在我们就要把开源日志库log4cxx封装成so动态加载库文件. 在上一篇文章<log4cxx日志库RedHat下安装>中,我们已经将log4cxx安装在home/mac/log4cxx/log4cxx下了,那么接下来的操作我们就继续在这个路径下进行. 还是先tree一下/home/mac/log4cxx这个目录吧 log4cxx ---apr ---apr-util ---log4cxx 那再

如何将一个文件夹复制到另一个文件夹中并保留其权限

概要 本文分步介绍了如何将一个文件夹复制到另一个文件夹中并保留其权限.   当您使用 Windows Explorer 复制或移动文件和文件夹时,在这些文件或文件夹上设置的权限可能会发生改变.例如,当您在一个 NTFS 文件系统卷内或在两个 NTFS 卷之间复制一个文件时,Windows 2000 将把它当作一个新文件.作为一个新文件,它将具有目标文件夹的权限,您将成为"创建者所有者".    注意:您必须对目标文件夹具有"写"权限才能复制文件和文件夹.    可以

shell 查出文件并复制到另一个文件夹

找出所有大于100M的文件并展示出来 find / -size +100M -exec ls -lh {} \; 找出特定文件内大于200字节的文件并备份到另一个文件夹里去 find /opt/test -type f  -size +200c -exec cp {} /opt/test/cp/   \;

Linux 将文件夹下的所有文件复制到另一个文件里

如何将文件夹/home/work下的文件复制到/home/temp里面? 使用命令: cp -R /home/work/* /home/temp *表示所有文件 但是/home/work 下的隐藏文件都不会被拷贝 更好的复制的方法是用"."代替"*"就好了. cp -R /home/work/.  /home/temp 将一个文件夹复制到另一个文件夹下,例如将/home下的work文件夹复制到temp下面 命令为: cp -R /home/work  /home/t

trustbox文件怎么复制,永久保存

trustbox文件怎么复制,永久保存? 需要破解后复制,永久保存. 点击加QQ:909486402 首先我们打开trustbox文档,如果我们需要把trustbox和trustbox的文件复制到D盘, 我们可以用鼠标的左键点击C盘中的trustbox文件, 然后按住ctrl键,再点击与trustbox文件. 怎样复制文件? 然后,我们用鼠标的左键点击编辑,在弹出的方框中点击复制,怎样复制文件? 3然后,我们再打开D盘,怎样复制文件? 步骤阅读4在D盘中点击编辑,这时会弹出一个方框. 相关阅读:

linux命令の删除文件和文件夹 复制粘贴文件和文件夹

声明:此博文来自百度经验http://jingyan.baidu.com/article/642c9d34dcba80644a46f72d.html,谢谢分享! linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可.直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字-r 就是向下递归,不管有多少级目录,一并删除-f 就是直接强行删除,不作任何提示的意思 删除文件夹实例:rm -rf /var/log/http

Linux下把目录拷贝到全部同名目录的脚本

需求:拷贝文件夹到Linux文件夹下.覆盖该Linux文件夹下全部同名文件夹 目标:Linux下,运行本脚本.输入目录名.就可以批量复制覆盖. 使用说明: 先把本脚本文件和要复制的文件夹移到将要覆盖的Linux文件夹,之后运行本脚本就可以. 运行命令: ./tcopy.sh 1.假设提示-bash: ./tcopy.sh: Permission denied,那要先赋给其权限: chmod +x tcopy.sh 再运行./tcopy.sh就可以. 2.觉着麻烦的话 sh tcopy.sh也行.

在linux下的使用复制命令cp,不让出现“overwrite”(文件覆盖)提示的方法。(转)

在linux下的使用复制命令cp,不让出现"overwrite"(文件覆盖)提示的方法. 一般我们在使用cp命令时加上-f选项,希望不让出现"overwrite"的提示(文件覆盖的提示).如:# cp -rf sourcefile targetdir 或#cp -r -f sourcefile targetdir-r的意思是递归复制,也就是复制文件夹及其下所有文件.-f的意思是遇到同名的文件时不提示,直接覆盖. 但是为什么加上-f了,还出现"overwri

linux共享文件samba安装与java读取外部文件夹方法

测试环境RedHat 6.4 一.安装 samba组件安装: (1)首先用“rpm –qa |grep samba”命令检验系统samba服务是否安装. #rpm –qa |grep samba samba-common-3.6.9-151.el6.x86_64.rpm samba-winbind-3.6.9-151.el6.x86_64.rpm samba-winbind-clients-3.6.9-151.el6.x86_64.rpm samba-3.6.9-151.el6.x86_64.r