[shell/脚本]检索某个文件夹下的所有文件夹并且复制文件夹下文件到指定目录

2023-11-05

写一个脚本实现不同分支下的代码sync
递归去检索某个文件下的所有文件

#!/bin/bash

#usage:
#source sync_code.sh (源码路径) (目标路径)

SOURCEDIR=$1
TARGETDIR=$2

if [ ! -d $SOURCEDIR ] || [ ! -d $TARGETDIR ] ; then
        echo "Input path is not exist!"
fi

function is_ready(){
	sou_dir=$1
	tar_dir=$2
	if [ ! -d $sou_dir ] || [ ! -d $tar_dir ] ; then
        echo "The paths do not exist or the two do not match!"
	else
		#该方法不完全可取 因为文件夹下存在make.inc
		#cd $sou_dir
		#cp -fp `ls |grep -v data|xargs`
		#cd $tar_dir
		#find -name *.inc |xargs rm -rf

		if ls $sou_dir/*.h >/dev/null 2>&1;then
			#echo "this path exit target_file *.h"
			cp -fp $sou_dir/*.h $tar_dir/
		else
			echo "this path does not exit target_file *.h"
		fi

		if ls $sou_dir/*.c >/dev/null 2>&1;then
			#echo "this path exit target_file *.c"
			cp -fp $sou_dir/*.c $tar_dir/
		else
			echo "this path does not exit target_file *.c"
		fi
		
		#可以手动添加其他格式的文件
	fi
}

function cp_file(){
	sou_dir=$1
	tar_dir=`echo ${sou_dir} |sed "s?${SOURCEDIR}?${TARGETDIR}?g"`
	echo $tar_dir
	echo $sou_dir
	is_ready $sou_dir $tar_dir
}

function dir_list(){
	for file in $1
		do
			if [ -d "$file" ] 
			then
				cp_file $file
				dir_list $file"/*"
			fi
		done
}

dir_list $SOURCEDIR
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[shell/脚本]检索某个文件夹下的所有文件夹并且复制文件夹下文件到指定目录 的相关文章

  • grep 以特定字符串开头的行

    我想找到文件中以特定字符串开头的所有行 问题是 我事先不知道字符串里有什么 该值存储在变量中 天真的解决方案如下 grep my string file txt 因为如果 Bash 变量my string包含任何正则表达式特殊字符 grep
  • cron 作业不适用于 xwindow

    我在 crontab 中有以下行 1 xeyes 它不显示任何 xwindow 但相反 1 touch somefile txt 工作正常 尝试在谷歌上搜索但没有得到任何具体答案 如果您运行的命令使用 X 服务器 您必须告诉 cron 在哪
  • 如何将动态链接的应用程序转换为静态链接的应用程序?

    我有一个应用程序 例如 gedit 它是动态链接的 但我没有源代码 所以我不能按我喜欢的方式编译它 我想要做的是将其静态链接并将其移动到没有运行该应用程序所需的库的系统 那么是否可以做到以及如何做到呢 理论上是可能的 您基本上必须执行与动态
  • posix 和 linux 特定函数的 C++ 包装器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您知道有什么好的库将 posix 和 linux 函数和结构 例如套接字或文件描述符 包装到 C 类中
  • 为什么不使用 sshrc 中设置的 $PATH?

    我正在尝试在 OS X 服务器上通过 ssh 设置 svn 为了做到这一点 我读到我需要一个包装器来设置 umask 并 在我的例子中 设置存储库根 一种快速而肮脏的方法是重命名 usr bin svnserve并将包装器脚本放置在该位置
  • 为什么我不能用这个循环从 bash 历史记录中删除多个条目

    这个循环将显示我想要做的事情 但是如果我删除echo从中 它实际上不会删除任何内容 history grep 0 5 0 9 ls cut c1 5 while read id do echo history d id done 我添加了缩
  • 有人可以解释一下以下内存分配 C 程序的性能行为吗?

    在我的机器上 时间 A 和时间 B 交换取决于是否A是 定义或未定义 这会改变两个的顺序 callocs 被称为 我最初将此归因于寻呼系统 奇怪的是 当mmap被用来代替calloc 情况更加奇怪 两个循环花费的时间相同 正如预期的那样 作
  • Visual Studio 代码中的“Git:gpg 未能签署数据”

    全新安装 Linux 后 我尝试设置我的环境 并且不断收到Git gpg failed to sign the data在本地提交更改时出错 我使用的是 Visual Studio Code 专有版本 而不是开源版本 gitconfig u
  • Cmake 错误未定义对“pthread_create”的引用

    我对 cmake FindThreads 进行了测试 这是我的源代码test cpp和CMakeLists txt include
  • 安装heroku toolbelt后出现Ruby错误

    我正在 win 7 32 位系统上使用 Heroku 但我没有管理员权限 我已经下载并安装了heroku工具带如下http community webfaction com questions 11803 heroku toolbelt h
  • Linux GCC 上 的 C++ 编译问题

    尝试过谷歌并在这里搜索 但没有运气 我正在尝试将一些使用 Windows 的代码移植到 Linux 上 然后我得到了大量的编译错误 我所做的只是 include
  • Python select() 行为很奇怪

    我在理解 select select 的行为时遇到一些困难 请考虑以下 Python 程序 def str to hex s def dig n if n gt 9 return chr 65 10 n else return chr 48
  • SDL/C++ OpenGL 程序,如何阻止 SDL 捕获 SIGINT

    我在用SDL http www libsdl org 用于在 Linux 上运行的 OpenGL 应用程序 我的问题是 SDL 正在捕获 SIGINT 并忽略它 这是一个痛苦 因为我正在通过屏幕会话进行开发 并且我无法使用 CTRL C 终
  • 将匹配的值传递给函数,并替换为返回值

    我如何让 Bash 匹配正则表达式 而不是用常量字符串替换值 而是将匹配的值传递给函数 然后从函数的返回值中获取要替换的值 像下面的伪代码一样 它替换了每一个匹配项 a d 具有相同的字符 但大写 function uppercase ec
  • shell脚本响应按键

    我有一个 shell 脚本 本质上是这样的 while true do read r input if input a then echo hello world fi done 这一切都很好 但我刚刚意识到在这种情况下必须按 ENTER
  • 删除所有出现的重复行

    如果我想删除某些字段重复的行 那么我使用 sort u k n n 但这仍然发生一件事 如果我想删除所有出现的重复项 有没有快速的 bash 或 awk 方法可以做到这一点 例如我有 1 apple 30 2 banana 21 3 app
  • 无法声明接口:资源繁忙

    我正在使用 USB4Java 低级版本 并且基本上是根据这段代码工作的here http www mets blog com java usb communication usb4java 我在 Ubuntu 中工作 遇到了有关权限的问题
  • 如何安装 Node 和 NPM 以便不必使用 sudo?

    我正在尝试在 Ubuntu 14 04 计算机上设置 Node js 和 NPM 但遇到了一些问题 在我的第一次尝试中 我不断得到EACCES尝试安装软件包时出错 有时甚至使用sudo 所以我彻底卸载了node和npm 现在我正在尝试找出如
  • PS1 定义中的条件 pwd

    我想显示当前工作目录如果我处于symlink比没有 到目前为止我已经 pwd P pwd echo 1 31m pwd P echo 1 32m pwd 将返回所需的输出 但它不能替代 w在命令提示符下 我尝试用反引号括起来 但这只会导致p
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt

随机推荐

  • 语法基础——Objective-C语法基础

    前言 学习过Swift之后 好久没用已经生疏了 现在有项目来了 不得不停下手下的工作 开始学习OC 当然这篇文章会以Java基础和C基础作为支撑 这样学习起来入门很简单 可能这篇文章有点个人主义 用作个人笔记吧 OC特点 支持C语法 支持面
  • java中将url下载并转换为MultipartFile文件

    url转换MultipartFile用于图片持久化 需要在对应的网络下才能使用 url转MultipartFile url 图片URL fileName 文件名 return 返回的文件 public static MultipartFil
  • chmod 用法示例

    介绍 Linux中的Chmod命令用于更改或分配文件和目录的权限 在Linux Unix系统中 文件和目录的可访问性是由文件所有权和权限决定的 在上一篇文章中 我们了解了如何使用chown命令管理文件和目录的所有权 在本教程中 我们将介绍c
  • There is no item category assigned to account xxxxxxx

    做GOODS ISSUE的时候遇到这么一个问题 报出一个错误There is no item category assigned to account xxxxxxx 暂时也不知道原因 后来到 Financial Accounting Gl
  • React面试题

    目录 1 什么是虚拟DOM 2 类组件和函数组件之间的区别是什么 3 什么是React 4 说说 Real DOM 和 Virtual DOM 的区别 优缺点 5 在react中如何处理事件 6 class组件和函数组件区别 7 state
  • python之for循环使用(奇数和、偶数和、最大公因数和最小公倍数、用户登陆系统)

    需要知道 有关range gt gt gt range 5 0 1 2 3 4 gt gt gt range 7 0 1 2 3 4 5 6 gt gt gt range 1 7 1 2 3 4 5 6 gt gt gt range 2 7
  • 3DMAX初学者使用软件之前必须设置的参数,你看过了吗?

    刚开始学习3dmax感觉非常的迷茫 软件的安装 软件的基本设置 让刚接触的同学们痛苦不已 那么今天我们来分享一下新手下载完3dmax之后需要进行的基本设置 看好了哦 不要眨眼 你也可以轻松掌握 1 切换语言 单击开始菜单 选择所有程序 找到
  • 机器学习实战之SVD

    1 奇异值分解 SVD singular value decomposition 1 1 SVD评价 优点 简化数据 去除噪声和冗余信息 提高算法的结果 缺点 数据的转换可能难以理解 1 2 SVD应用 1 隐性语义索引 latent se
  • lisp 左手钢筋_LISP命令汇总

    1 本程序用于写钢筋直径 gj 1 测量长度 l m 2 测量多个长度之和 adlm 3 标注一个图元的分段长度 dd 4 标注一个图元的总长度 tj 5 标注多个图元的总长度 td 6 标注多个图元的分段长度和总长度 sd 7 本程序用于
  • 【Pandas 入门-4】时间序列数据处理与数据清洗

    文章目录 时间序列数据处理 to datetime 与 dt strftime 数据聚合函数 resample 数据清洗 数据替换 replace fillna 重复值处理 drop duplicates 缺失值处理 drop na 重命名
  • 【跑实验01】TypeError: ‘function‘ object is not subscriptable

    在运行实验的过程中 遇到了一个问题 Traceback most recent call last File get cropped val images py line 86 in
  • 个人网站推广服务器,个人网站如何利用百度来推广自己的网站

    提前先申明一下 1 我下面所讲 利用百度推广网站 的经历是真实有过的 并非虚假吹牛 2 我所讲的的内容中的方法必须天天坚持 如果不能坚持的不一定有效果 大家听听就 行了 我要让大家知道的是做网站推广的人要有一种精神 以此来鼓励大家 开始叙说
  • Python正则表达式re.sub功能详解

    Python正则表达式re sub功能详解 正则表达式 regular expression 缩写为re sub即substitute 替换 re sub 语法结构 re sub pattern repl string count flag
  • 区块链中的去中心化

    想知道更多区块链技术知识 请百度 链客区块链技术问答社区 链客 有问必答 去中心化 是加密经济学领域中使用频率最高的词汇之一 同时也是区块链中最为关键的特性 但是其定义一直模糊不清 为了实现去中心化 迄今为止 人们已经花费数千小时的研究 投
  • android studio 华为手机真机测试

    手机的开发人员选项打开 USB 调试打开 在拨号界面输入 2846579 进入测试菜单界面 然后 Project Menu 后台设置 LOG设置 LOG 开关 LOG 打开 LOG 级别设置 VERBOSE Dump Log 全部选中 重启
  • GDI+ 中图片的绘制

    背景 GDI 中使用 Graphics 类的成员函数 DrawImage 来绘制图片 原样绘制 使用 Graphics 类的 成员函数 DrawImage 来绘制图片 当仅指定绘制起始位置时按照图片大小原样绘制 void DemoGDI D
  • Spark学习(六) 数据结构(迭代器、数组、元组)

    Spark学习 六 数据结构 迭代器 数组 元组 1 迭代器 Iterator 1 在Scala中迭代器不是一种集合 但是它提供了访问集合的一种方法 2 迭代器包含两个基本操作 next和hasNext next可以返回迭代器的下一个元素
  • 哈希表(Hash Table)原理及其实现

    原理 介绍 哈希函数构造 冲突处理 举例 拉链法 hash索引跟B树索引的区别 实现 原理 介绍 哈希表 Hash table 也叫散列表 是根据关键码值 Key value 而直接进行访问的数据结构 也就是说 它通过把关键码值映射到表中一
  • 逻辑回归(梯度上升、交叉验证)Python实现

    目录 1 介绍 2 算法实现 3 代码 4 实验结果 1 介绍 logistic回归又称logistic回归分析 是一种广义的线性回归分析模型 常用于数据挖掘 疾病自动诊断 经济预测等领域 例如 探讨引发疾病的危险因素 并根据危险因素预测疾
  • [shell/脚本]检索某个文件夹下的所有文件夹并且复制文件夹下文件到指定目录

    写一个脚本实现不同分支下的代码sync 递归去检索某个文件下的所有文件 bin bash usage source sync code sh 源码路径 目标路径 SOURCEDIR 1 TARGETDIR 2 if d SOURCEDIR