批量

There are 2 entries for the tag 批量

Linux下如何批量建立文件软连接(极简版)

MitchellChu 2014-05-21 Unix & Linux

在上一篇里面是通过创建了Shell脚本文件的方式来批量创建文件的软链接,由于Shell脚本处在(Linux)菜鸟阶段,那个脚本文件的编写完全是现学现卖——Shell语法都没看完,这我会告诉你吗,告诉你会信吗?所以引出的一个问题是:此脚本虽然能正确处理任务但肯定还有很多地方的处理值得商榷。为此也花了一些时间思考了一下如何不要使用shell脚本文件来处理批量建立软链接的问题,后来确有一些思路,在上篇成文之时已经有了一些方法,所以当时卖了一个关子。 要一行脚本代码来建立批量的文件软链,Mitchell的思路主要在通道的使用上,我希望能够这样: ## 代码是示意,并不能正常运行 ls /tmp/*.log | ln -s ..... 但在Linux下这个通道我并没有知道合适的传递参数的方法。只能告一个段落。换种思路,就是将文件列表用for循环来处理。于是,有了下面的脚本: ## 获取目录下要软链接的文件,让后用for遍历文件来创建软链接。 FILES=`ls *.log`;for FILE in $FILES;do ln -s '/tmp/'$FILE '/tmp/lnk_'$FILE;done 但这个只能放到目标目录下,这是/tmp目录,然后运行,因为FILE遍历出来不能含有路径。为了改善这个缺点,做了改进: ## 使用basename来将路径过滤掉,只取文件名称 FILES=`ls /tmp/*.log`;for FILE in $FILES;do ln -s $FILE '/tmp/lnk_'`basename $FILE`;done 后来发现,此处还可以继续改进,在Linux下你可以这样: ## create all files' soft link in '/tmp/' which subfix is log, and all link files' save to /tmp/ with prefix 'lnk_' for FILE in /tmp/*.log;do ln -s $FILE '/tmp/lnk_'`basename $FILE`;done  这样就可以在任意位置下运行这个代码,只要修改目标路径和存放链接的路径即可。  很酷吧,这样就可以实现上一篇的那么东西。来吧,看看更酷的,回到前面的通道,我们虽然没有办法直接将数据直接传递给ln,但是我们可以这样批量建立软链接: ## Create a batch of soft-link files with pipeline ls /tmp/*.log | xargs -L 1 -i sh -c "ln -s {} '/tmp/lnk_'\$(basename {})"  哇噢~ 原来通道也可以这么来做,当然,Mitchell对Linux的命令还不是很了解,但我相信肯定可以在这个基础上,再精简出更酷的代码的。 恩,看了上面两种方法,是不是瞬间觉得好有难度——恭喜,Same as me。搞这个软链接,需要这么消耗脑细胞吗。记得原来的cp好像有个参数是创建连接的,于是,翻看了cp的命令帮助,加之网络搜索大神附身,不多久,出来了cp版: ## create a batch of soft-link files with cp command. ## this command can not create soft-link file with prefix or subfix ## so...

Linux下如何用Shell脚本批量创建文件软链接

MitchellChu 2014-05-21 Unix & Linux

这篇是个人Shell脚本的初作,功能是批量创建文件的软链接。文中值得商榷之处肯定非常多,欢迎大家指点。 —— MitchellChu 最近在Linux,具体说是CentOS (v 6)下,因为自定义安装的软件太多,而自定义安装之后,由于系统的PATH中没有安装软件的路径,每次都需要将安装后的软件可执行文件在PATH里面有的bin目录下创建软链接,以此来达到直接可以调用的目的。一个文件两个文件也许还好,可有的软件需要弄出个一大堆的文件要软链接,在Shell下一个一个命令的敲,确实不是一个事情。也正因此,才有了此篇博文——Linux下用Shell脚本来批量创建文件的软链接。 要批量创建文件的软链接,自然要想想下我的shell脚本应该是能够提供什么样功能的(需求):由于初期没有什么特别要求,只要批量创建软链接即可,但创建软链接是使用ln -s target_file link_file的格式来的,所以,1. shell脚本要可以接收到这两个关键因素!2.如果仅仅是接受这两个参数,就没有批量创建软链接一说了,因此,还应该有个文件过滤器,能够将需要批量创建的文件筛选出来。 需求明确成:shell脚本能够过滤出需要创建软链接的文件,并通过ln命令在目标目录中批量创建软链接文件。 根据这个需求,捣鼓了一下,弄出了BatchLinkFilesCreater.sh: #!/bin/sh ######################## ## ARGUMENTS: ## TARGET_DIR: the directory where the link file to link. ## FILES_FILTER: this is the arguments of the ls command. ## LINK_DIR: where is the link file to save. ######################## function usagehelp() { echo -e "Usage:batchCreateLink.sh -t TARGET_DIR -f FILES-FILTER -l LINK-DIR\n\n TARGET_DIR: the directory where the link file to link\n\n FILES_FILTER: arguments of ls command, to filter the list...

关于博主

  一枚成分复杂的网络IT分子,属于互联网行业分类中的杂牌军。