linux脚本,想写个.sh脚本编写,运行一次能把当前目录中所有文件夹中的同一个名字的文件(这个文件中

shell脚本查找指定目录下所有子目录中的同名文件
shell脚本查找指定目录下所有子目录中的同名文件
今天qq群里有位挺厉害的大神提出了一个问题:&上海-redis-蛋疼() 17:39:37 &有没有查找一个目录下面 有没有重名文件的 工具 啊&
大家都知道,同一个目录下是不存在同名文件的,因此肯定要遍历子目录查找同名文件
find命令查找所有的子目录
find命令循环遍历子目录,获取所有的文件
对所有的文件做去重
因为是shell脚本,所以用好sort、uniq、awk等是非常方便的
#!/bin/bash &
#获取查找的目录名 &
if [ 'x' == 'x'$1 ]; then &
& & echo &Usage $0 search_dir& &
& & exit &
#变量定义 &
dir_arr=$(find $1 -type d -) &
store_path=&/tmp/1.txt& &
if [ -f $store_path ]; then &
& & rm -r $store_path &
#获取所有的文件 &
for dir in ${dir_arr[*]} &
& & find $dir -type f &&$store_path &
#输出重复的文件名 &
for file in $(awk -F '/' '{print $NF}' $store_path &| sort | uniq -d) &
& & echo $file &
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'问题:求助各位~一个有关linux中sh脚本里写循环的问题,谢谢O∩_∩O~
描述:a = ["name1", "name2", "name3"......"name100"]for i in 路径/*.py
#这个路径底下有100个python脚本,名字不同,代码一样
我需要把每个python文件打开,改动一行if name = "":把a中名字对应进去,保存,运行下边这条
python $i & $i.txt
#各自结果存到相应的txt($i.txt 这句不确定写对了没。。。)
do里面有两个任务,一是把python脚本改下,就是粘进去相应名字(100个名字,100个python脚本,100个结果txt)。
二是运行这个脚本
其实开始我都是对着a列表,打开python自己粘进去的,再运行,但现在时间紧迫,不知谁能帮忙想想怎么写呢?
解决方案1:忘记n+1了,在循环最后一行加上n=$(($n+1))解决方案2:看如下脚本可以不:
a="name1:name2:...:name100"
n=1for i in $(ls) ;
e="echo $a | cut -d : -f $n"
name=$(eval $e)
sed -i s/if name = \"\"/if name=\"$name\"/g $i
python $i & ${i}.txt
以上介绍了“求助各位~一个有关linux中sh脚本里写循环的问题,谢谢O∩_∩O~”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:/wd/574938.html
上一篇: 下一篇:Linux下使用Shell脚本删除一个目录下的所有子目录和文件_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Linux下使用Shell脚本删除一个目录下的所有子目录和文件
来源:Linux社区&
作者:sunrier
Linux下使用Shell脚本删除一个目录下的所有子目录和文件
#!/bin/sh&&&&&&&&& &&
#FileName:deleteDir.sh&&&&&& &&
#Function:Linux下使用Shell脚本删除一个目录下的所有子目录和文件&&&&&&& &&
#Version:V0.1&&&&&&&&& &&
#Author:Sunrier&&&&&&&&& &&
#Date:& &&
CURRPATH=$PWD&&
#DESTPATH为删除的目标目录 &&
DESTPATH="/home/Sunrier/Trash"&&
#isNullDir函数判断进入的目录下是否存在下级子目录或者文件 &&
#存在返回1,不存在返回0 &&
isNullDir()&&
&&&&local&NewCurrentPath=$PWD&&
&&&&local&NewDirName=$1&&
&&&&cd&$NewDirName&&
&&&&local&NewFileList=`ls&2&/dev/null`&&&
#&&&-n&string&:&如果字符串不为空,则结果为真&& &&
&&&&if&[&-n&"$NewFileList"&]&&
&&&&then&&
&&&&&&&&echo&"目录$NewDirName下列表信息为$NewFileList"&&
&&&&&&&&cd&$NewCurrentPath&&
&&&&&&&&return&1&&&
&&&&else&&
&&&&&&&&echo&"目录$NewDirName为空目录"&&
&&&&&&&&cd&$NewCurrentPath&&
&&&&&&&&return&0&&&&&&
&&&&fi&&&&
if&[&"Sunrier"&!=&"$LOGNAME"&]&&
&&&&echo&"您没有执行权限!请联系管理员!"&&
&&&&exit&1&&&&
cd&$DESTPATH&2&/dev/null&&
if&[&$?&-ne&0&]&&
&&&&echo&"没有找到目标目录!"&&
&&&&exit&1&&
echo&"您正准备删除的目录为$DESTPATH"&&
#不考虑隐藏目录和文件 &&
FileList=`ls&2&/dev/null`&&
while&[&""&!=&"$FileList"&]&&
&&&&echo&"当前列表信息为&$FileList"&&
&&&&for&pFile&in&$FileList&&
&&&&&&&&echo&"加载&${pFile}&中......"&&
&&&&&&&&if&[&-d&${pFile}&]&&
&&&&&&&&then&&
&&&&&&&&&&&&echo&"检查到&${pFile}&为目录&"&&
&&&&&&&&&&&&echo&"目录&${pFile}&处理中......"&&
&&&&&&&&&&&&&&
#注:在Linux的Shell脚本中,调用函数作为判断条件时,函数返回值为0时,if后的条件才为真;否则if后的条件为假!&&&&&&&&&&&&&&& &&
&&&&&&&&&&&&if&&isNullDir&"${pFile}"&&
&&&&&&&&&&&&then&&
&&&&&&&&&&&&&&&&echo& "删除目录&${pFile}&中......"&&
&&&&&&&&&&&&&&&&rm&-rf&${pFile}&&
&&&&&&&&&&&&else&&
&&&&&&&&&&&&&&&&echo&"移动目录${pFile}下的所有目录和文件中......"&&
&&&&&&&&&&&&&&&&mv&${pFile}/*&.&&/dev/null&2&&1&&
&&&&&&&&&&&&fi&&
&&&&&&&&else&&
&&&&&&&&&&&&echo&"检查到&${pFile}&为文件&"&&
&&&&&&&&&&&&echo&"正在把文件&${pFile}&的文件名更改为文件名&1&中......"&&
&&&&&&&&&&&&mv&${pFile}&1&2&/dev/null&&
&&&&&&&&fi&&
&&&&&&&&if&[&-f&1&]&&
&&&&&&&&then&&
&&&&&&&&&&&&echo&"发现文件名为1的文件,正在删除文件1中......"&&
&&&&&&&&&&&&echo&"123456"&&1&&
&&&&&&&&&&&&rm&-rf&1&&&&&&&&&&
&&&&&&&&fi&&
&&&&done&&
&&&&echo&"更新新的文件列表中......"&&
&&&&cd&$DESTPATH&&
&&&&FileList=`ls&2&/dev/null`&&
done&&&&&&&&&&&&&&&&&&
if&[&$?&-eq&0&]&&
&&&&echo&"清理成功!"&&
&&&&cd&$CURRPATH&&
&&&&exit&0&&
&&&&echo&“"清理失败!"&&
&&&&cd&$CURRPATH&&
&&&&exit&1&&
相关资讯 & & &
& (07/22/:00)
& (03/08/:33)
& (04/14/:58)
& (07/21/:42)
& (10/30/:00)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
匿名 发表于 rm -rf DIR/*;rm -rf DIR/.*Ubuntu 用shell脚本实现将当前目录下所有目录中的某一类文件拷贝
(window.slotbydup=window.slotbydup || []).push({
id: '2611110',
container: s,
size: '240,200',
display: 'inlay-fix'
您当前位置: &
[ 所属分类
当前目录下有一些文件和目录,其中每个目录里都有若干.txt文件,现在要求在当前目录创建一个新目录all,且将那些目录所有.txt文件都拷贝到目录all。在Ubuntu 12.04的shell脚本实现如下:#!/bin/sh# 提示信息echo "start:"# 定义变量dst=allpst=.txt# 复制文件到目标文件夹if [ -d ${dst} ]thenecho "${dst} existed"elseecho "mkdir ${dst}"mkdir ./${dst}cp ./*/*$pst ./$dstfi更多Ubuntu相关信息见Ubuntu 专题页面 /topicnews.aspx?tid=2本文地址:http://www.codesec.net/Linux/595.htm
本文系统(linux)相关术语:linux系统 鸟哥的linux私房菜 linux命令大全 linux操作系统
转载请注明本文标题:本站链接:
分享请点击:
1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
如果你不能做大事,那就以一种伟大的方式做小事。
手机客户端
,专注代码审计及安全周边编程,转载请注明出处:http://www.codesec.net
转载文章如有侵权,请邮件 admin[at]codesec.netlinux中我在一个目录下执行该目录下的一个脚本,比如说 执行一个叫ss.sh 的脚本_百度知道
linux中我在一个目录下执行该目录下的一个脚本,比如说 执行一个叫ss.sh 的脚本
,那么我可以直接输入ss.sh吗?就是说不用 点斜杠即./ss.sh的命令来执行珐哗粹狙诔缴达斜惮铆这个脚本。可以这样吗?
提问者采纳
1、export PATH=$PATH:.ss.sh2、bash ss.sh3、. ss.sh4、${PWD}/ss.sh5、exec ss.sh6、把ss.sh放到PATH包含的路径里,比如/bin等
那然后我直接在ss.sh所在的目录下输入ss.sh这个指令就可以执行这个脚本了吧?
1、没必要纠结于哪种方式2、6种不用./ss.sh执行的方法,但是用./ss.sh是个好的习惯。3、如果输入ss.sh就能执行,别人在其他路径存放了恶意的代码就坏了。
提问者评价
help me a lot!
其他类似问题
为您推荐:
其他1条回答
如果你当前用户的环境变量'PATH'中包含'.',那是可以的。具体可以echo $PATH
linux的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 sh脚本获取当前时间 的文章

 

随机推荐