要查看执行查找时发生的情况,只需键入set -xv即可

-x:在执行时打印命令及其参数.

-v:在读取时打印shell输入行.

这是我有的:

find . -name "*.xml" -exec echo {} \;

给出输出:

./log.xml

./svnLog.xml

当我尝试:

set -xv

find . -name "*.xml" -exec echo {} \;

我明白了:

find . -name "*.xml" -exec echo {} \;

+ find . -name '*.xml' -exec echo '{}' ';'

./log.xml

./svnLog.xml

然后找到执行回显传递找到的文件名而不是litteral:'{}’

但是当您向{}添加内容时,如下所示:

find . -name "*.xml" -exec echo something{} \;

+ find . -name '*.xml' -exec echo 'something{}' ';'

something{}

something{}

这里对我所拥有的2个xml文件执行两次echo,并且因为没有更多'{}’是exec的参数列表,所以它不会被替换.所以我们找到了每个文件的echo’something {}’.

为了解决这个问题,您可以考虑执行echo传递给它的文件名作为参数,例如:

sh -xvc 'echo sothing/$0' filename

我们已经知道什么是-x和-v. -c是从它后面的字符串中获取命令(man sh)

结果是:

sh -xvc 'echo somthing/$0' filename

+ sh -xvc 'echo somthing/$0' filename

echo somthing/$0

+ echo somthing/filename

sothing/filename

我在”之间使用’echo somthing / $0′,以便$0不会被当前的shell扩展.尝试用“”,你会看到$0的扩展;)

因此,要回到“问题”,查找应格式如下:

find . -name "*.xml" -exec sh -xvc 'echo sothing/$0' {} \;

我们会得到:

find . -name "*.xml" -exec sh -xvc 'echo sothing/$0' {} \;

+ find . -name '*.xml' -exec sh -xvc 'echo sothing/$0' '{}' ';'

echo sothing/$0

+ echo sothing/./log.xml

sothing/./log.xml

echo sothing/$0

+ echo sothing/./svnLog.xml

sothing/./svnLog.xml

我们可以看到,find会执行shell cammand echo sothing / $0传递给它'{}'(由find找到的文件名替换)所以我们得到了所需的echo sothing /./ log.xml

设置xv以删除详细模式

我们可以得到:

find . -name "*.xml" -exec sh -c 'echo "cp $0 someWhereElse/$0"' {} \;

cp ./log.xml someWhereElse/./log.xml

cp ./svnLog.xml someWhereElse/./svnLog.xml

所以在你的情况下,你只需要在子shell中执行副本(添加sh或bash或者在exec之后你喜欢shell)并让find将文件名作为parapeter传递给它;)

find /home/mine -iname "*.png" -exec sh -c 'cp $0 /home/mine/pngcoppies/copy/$0' {} \;

希望这可以帮助我,并为我的英语执行.

linux basename目录,linux – 在find -exec中使用basename和full path相关推荐

  1. linux将目录路径加入环境变量中,如何添加路径到PATH环境变量

    1.直接用export命令:#export PATH=$PATH:/opt/au1200_rm/build_tools/bin 命令解释: 设置环境变量 PATH 为 /usr/local/arm/3 ...

  2. linux basename目录,Linux basename命令的使用方法

    01. 命令概述 basename - 从文件名中剥离目录和后缀 basename命令用于打印目录或者文件的基本名称.basename和dirname命令通常用于shell脚本中的命令替换来指定和指定 ...

  3. linux chkconfig 目录,Linux中chkconfig命令的简介及使用方法

    Linux中chkconfig命令的简介及使用方法 发布时间:2020-08-17 16:39:04 来源:亿速云 阅读:94 作者:小新 小编给大家分享一下Linux中chkconfig命令的简介及 ...

  4. linux basename用法,关于linux:在find -exec中使用basename和full path

    我正在用find today进行bash脚本编写世界的冒险. 假设我要将/home/mine/pictures的任何子目录中的任何png文件复制到/home/mine/png机会,并使用find和-e ...

  5. linux 自定义目录,Linux系统中使用脚本指自定义文件夹图标(gio命令)

    如图所示,更改了一个文件夹的默认图标,一直没搞明白,这个设置是保存在哪个文件里面,想通过脚本控制变更图标,一直没有实现,经多方搜索资料,发现可以使用gio命令解决. 一.gio 命令 gio COMM ...

  6. linux spyder 目录,linux下创建spyder桌面图标的方法

    linux下创建spyder桌面图标的方法 发布时间:2020-07-20 11:08:41 来源:亿速云 阅读:96 作者:清晨 小编给大家分享一下linux下创建spyder桌面图标的方法,希望大 ...

  7. linux rpm目录,Linux修改RPM的安装目录的方法

    Linux系统下大多数人都是使用rpm -i xxxx.rpm命令来安装RPM包,这种情况下RPM会被安装在默认的目录当中.如果不想把RPM安装在这个目录下应该怎么办呢?下面就来介绍一下Linux如何 ...

  8. linux 自定义目录,linux – cron命令的自定义目录

    我在Debian / Ubuntu上使用vixie cron.如何设置cron要读取的自定义目录?我想引导crontab运行在一系列文件中找到的命令,例如 /home/cron/*.cron 或完美 ...

  9. rm linux 复制目录,linux学习(四)复制(cp)移动(mv)删除(rm)查找(find)文件、文件夹操作、软硬链接的区别...

    复制文件 cp命令用于复制文件到制定的目录 语法格式为: cp [选项] 源文件或目录 目标文件或目录 命令选项 含义 cp -d 当复制符号链接时,把目标文件或目录页建立为符号链接,并指向与源文件或 ...

最新文章

  1. RDKit | 基于Pytorch和RDKit建立QSAR模型
  2. mfc 弹框只出现一次_只出现一次的数字
  3. R: ggplot2(1)
  4. 显示农历天气时钟小部件下载_安卓最强桌面小部件:Zooper Widget
  5. 终端打开后-bash_如何爵士化Bash终端-带有图片的分步指南
  6. Django Python MySQL Linux 开发环境搭建
  7. Yii2.0数据格式器
  8. 解决@ResponseBody注解返回的json中文乱码问题
  9. Android Message和obtainMessage的区别
  10. 文字处理技术:完成了对表格的布局处理
  11. paip.php 配置ZEND DEBUGGER 断点调试for cli..
  12. SENT协议学习总结
  13. SqlServerSQL语句方式--视图创建
  14. 计算机视觉及OpenCV入门简介
  15. 计算机毕业设计Java多媒体网络教学(源码+系统+mysql数据库+lW文档)
  16. Ubuntu安装Mysql5.7
  17. CSS实现单行、多行文本溢出显示省略号(…)
  18. 字写的不好没关系,用python随便就生成了艺术签名
  19. 一杯凉茶 mysql_那一杯凉茶
  20. 麒麟子Cocos Creator实用技巧

热门文章

  1. pytorch学习笔记(1):开始一个简单的分类器
  2. SpringBoot2.1版本的个人应用开发框架 - 集成Druid + MybatisPlus
  3. 【工具使用系列】关于MATLAB 模型预测控制工具箱, 你需要知道的事
  4. MySQL忘记root密码重置密码(5.7版本)
  5. 与David Blevins聊Java EE的未来
  6. Android SlidingMenu开源库及其使用
  7. 10g索引的作用实验1
  8. wlan bss ess ssid
  9. 扩展Editplus为Java IDE
  10. 建议提交的时候默认保存到剪贴板