这个解决方法我可是找了好久。。。正确写法:

find -name "*" -exec sh -c 'cat {} > {}.out.iso' \;

find -name "*.php" -exec bash -c "mv -f {} {}.tmp" \;

find -name "*.php" -exec bash -c "copy {} {}.tmp" \;

find -name "*.php" -exec bash -c "sed -e 's/aaa/bbb/' {} > {}.tmp; mv -f {}.tmp {}" \;

find -name "*.php" -exec bash -c "cp {} {}.tmp" \; a.phpa.php.tmpb.phpb.php.tmp

@ 2010-08-20 BS一下不看manpage的自己

引用

$ man sed

...

-i[SUFFIX], --in-place[=SUFFIX]

edit files in place (makes backup if extension supplied)

...

也就是说,只需要用 sed -i 就可以直接替换文件中的内容

======以前的分割线======

要用sed批量修改文件的内容,但是用这个命令解决不了问题:

find -name "*.php" -exec sed -e 's/aaa/bbb/' {} > {} \;

因为bash把 > 解释为find命令输出的重定向。

修改一下:

find -name "*.php" -exec sed -e 's/aaa/bbb/' {} \> {} \;

还是不行,因为 sed 去寻找一个名为 > 的文件进行处理

再修改:

find -name "*.php" -exec "sed -e 's/aaa/bbb/' {} \> {} " \;

还是不行,因为find去找一个名为 "sed -e 's/aaa/bbb/' {} \> {} " 的程序来执行

那是V缰

本文系统(linux)相关术语:linux系统 鸟哥的linux私房菜 linux命令大全 linux操作系统

主题: SUUF
分页:12
转载请注明
本文标题:[很有用处]find命令使用-exec 进行两次大括号传入路径进行cat重定向到对应的特定文件, ...
本站链接:http://www.codesec.net/view/532110.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 系统(linux) | 评论(0) | 阅读(38)