linux 修改当前目录包含子目录 下 aaa 开头的目录名及文件名 替换为 bbb开头目录名及文件名?
试试这个:find . -name "*.jar"|awk '{print "jar -tvf "$1}'|sh|grep AAA
补充:题主的问题不解开jar包用命令解决不了,上述命令仅用于查找jar包中class文件名称包含AAA关键字的,而不是内容,下面的命令可以输出jar包名称及其含有AAA关键子名称的class文件:
find . -name "*.jar"|while read name; do echo file:$name;jar -tvf $name|grep AAA; done
另:在windows下当你双击打开jar包,然后双击class文件查看其内容,也是临时解压后打开的,所以要查看jar包中class文件的内容,你不解开怎么能做到呢?
要达到题主的目标,只能解开,方法如下:
编辑一个shell脚本,名称随意,如findAAA.sh,内容如下:
#!/bin/bashfind -name "*.jar"|while read jarname #这里修改为你要在哪个目录下查找jar及class文件do echo "Processing jar-file:$jarname" mkdir /tmp/jartmp #临时解开放置的目录 cd /tmp/jartmp jar -xf $jarname find . -name "*.class"|while read cname do findflag=$(strings $cname|grep AAA) #class文件都是二进制的,用strings查看 if [ "$findflag"x != x ];then echo "Class File: $cname include keyword AAA" fi done rm -rf /tmp/jartmp #删除临时文件done编辑好脚本后,sh findAAA.sh执行即可。
mv命令用于移动文件或改名,格式为:“mv [选项] 文件名 [目标路径|目标文件名]”。
将文件aaa重命名为bbb:
[root@linuxprobe ~]# mv aaa bbb
还有aaa可以是非本目录下的文件,bbb也是一样,只要写清文件的路径就可以了
例如:
[root@linuxprobe ~]# mv /etc/aaa /opt/aaa
这样就把目录etc下的aaa文件移动到了 opt目录下名字也是aaa,当然也可以用cp命令复制,这样既有源文件又有新的目标文件,如果你是个初学者建议你找个网站或者书籍去学些,如果能有老师指导指导 还是很有益处的,我现在就在《linux就该这么学》这个网站学习,作者编写的书籍《linux就该这么学》质量水准很高,希望能帮到你,你可以去网站上学习学习!
用find+exec命令结合rename命令可实现文件名“部分替换”
因为存有目录的替换,目录替换后,就无法继续搜索原目录了,所以,需要多次执行才能完成所有目录的替换。
while [ 1 ]
do
find . -name "aaa*" -exec rename aaa bbb {} \;
if [ $? -eq 0 ] #如果替换中有错误,则上面命令执行结果会返回非0
then
break;
fi
done
#注意,此命令缺陷是,当同一目录下,有aaa123文件,也有bbb123文件,则原bbb123文件将会被aaa123所覆盖!!
rename命令格式说明:
rename from to file...
第一个参数from:被替换掉的字符串
第二个参数to:替换成的字符串
第三个参数file:匹配要替换的文件模式 可以是单文件,也可以是匹配模式(多文件,如aaa* aaa? aaa?? ) *匹配多字符, ?匹配单字符
这个简单的命令完成不了。用脚本或者是c/c++写个小程序。
首先将当前目录及其子目录和所有文件取出来,然后循环去匹配是否以aaa开头,如果是以aaa开头的则将aaa替换成bbb,后面部分不变。
mv aaa bbb
OK?
mv aaa bbb
和贩灰黄: 直接用更改权限命令chmodchmod -R 777 /home/linux测试步骤 useradd linuxll /home chmod -R 777 /home/linux ll但是不建议把文件夹设置为777,最多设置为755 Linux下的文件夹和文件权限建议: 文件夹 755 文件 644
金家庄区15741943295: linux 设置文件夹权限包括子文件夹 - ?
和贩灰黄: 添加上 -R选项即可... -R, --recursivechange files and directories recursivelyrecursive是递归的意思...比如我想改变 test下的所有文件权限su rootchmod a+x -R test这个只能改变权限另: 不管www下的子目录或者文件更改、删除或者新增文件、子目录...这个权限好像是无法保证的...但是,可以通过umask设置用户创建文件的默认权限...这个设置之后,特定用户再创建的文件的默认权限都会变化,但是达不到你要的仅仅某文件夹下创建的文件权限固定...你为什么想解除权限呢..弄成777干啥...
金家庄区15741943295: 求解:在linux系统下如何将一个目录下所有文件包含子目录内容合并到另外一个文件下,希望能给出详细的解答 - ?
和贩灰黄: 比如说你想把aa/文件夹下的所有内容合并到 bb/文件夹下 使用命令:cp -R -u aa/* bb/ (注:如果有同名文件或文件夹会提示是否覆盖)
金家庄区15741943295: LINUX C语言编程 修改当前目录下的所有子目录所有者为当前用户?
和贩灰黄: chown -Rh `who` ./ ls -l | tr -s ' ' | cut -d' ' -f 5,9
金家庄区15741943295: linux下怎样把一个目录的子目录复制到当前目录中 - ?
和贩灰黄: Linux系统下复制命令为2113cp,但是cp不带参数只能复制文件,如果需要把一个目录下的子目录复制到当前目录,需要加参数-R递归操作,把目录下文件和子目录一并处理: 例如:5261把/mnt/zhidao子目录复制到当前/etc目录下 cp -R /mnt/...
金家庄区15741943295: Linux系统中如何将一个目录及目录下的所有文件的拥有者改为用户A - ?
和贩灰黄: 例如Linux系统下有www账户,用chown -R命令,-R参数代表把该目录下包括子目录的拥有者(owner)都改变. 1、使用ls –l来查询文件目录的拥有者,如下图: 2、使用chown可以修改权限:1 2chown-R www /alidata/www/phpwind/ #即可将目录/alidata/www/phpwind下的所有文件和目录的拥有者都修改为www账户.
金家庄区15741943295: linux中改变当前目录至 /test ,在该目录下,建一个空的文件,再建两个子目录( - xh)与(ah) - ?
和贩灰黄: 改变当前目录的命令是:cd 创建文件夹的命令是:mkdir;创建文件的命令是:touch mkdir -p /test/xh mkdir -p /test/ah
金家庄区15741943295: 如何更改linux文件目录拥有者及用户组 - ?
和贩灰黄: 你好,具体修改操作步骤如下:一、《Linux的chmod命令》.在 shell 中,可以使用chown命令来改变文件所有者及用户组,chgrp命令来改变文件所在用户组.在 Linux的C程序中,可以使用chown函数来改变文件所有者,及所在用户组. 另...
金家庄区15741943295: 在linux下,请问怎样把一个目录下的所有文件夹属性设置为755,文件设置为644? - ?
和贩灰黄: find . -type d -exec chmod 755 {} + 这个是把当前目录下及子目录的属性改成755find . -type f -exec chmod 644 {} + 这个是把当前目录及子目录中的文件属性改成644
金家庄区15741943295: linux 下怎样修改一个目录及其子目录下的所有文件的 修改时间 ??? - ?
和贩灰黄: 这三行命令会把/home/aa/bb目录下的所有文件以及目录的修改时间设置为2011-8-20 12:22:22 你可以根据你的需要,自己设定日期.试试看吧.date1="2011-8-20 12:22:22" storepath=/home/aa/bb find $storepath1 -execdir touch -d "$date1" {} \;