linux basename目录,linux – 在find -exec中使用basename和full path
要查看执行查找时发生的情况,只需键入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相关推荐
- linux将目录路径加入环境变量中,如何添加路径到PATH环境变量
1.直接用export命令:#export PATH=$PATH:/opt/au1200_rm/build_tools/bin 命令解释: 设置环境变量 PATH 为 /usr/local/arm/3 ...
- linux basename目录,Linux basename命令的使用方法
01. 命令概述 basename - 从文件名中剥离目录和后缀 basename命令用于打印目录或者文件的基本名称.basename和dirname命令通常用于shell脚本中的命令替换来指定和指定 ...
- linux chkconfig 目录,Linux中chkconfig命令的简介及使用方法
Linux中chkconfig命令的简介及使用方法 发布时间:2020-08-17 16:39:04 来源:亿速云 阅读:94 作者:小新 小编给大家分享一下Linux中chkconfig命令的简介及 ...
- linux basename用法,关于linux:在find -exec中使用basename和full path
我正在用find today进行bash脚本编写世界的冒险. 假设我要将/home/mine/pictures的任何子目录中的任何png文件复制到/home/mine/png机会,并使用find和-e ...
- linux 自定义目录,Linux系统中使用脚本指自定义文件夹图标(gio命令)
如图所示,更改了一个文件夹的默认图标,一直没搞明白,这个设置是保存在哪个文件里面,想通过脚本控制变更图标,一直没有实现,经多方搜索资料,发现可以使用gio命令解决. 一.gio 命令 gio COMM ...
- linux spyder 目录,linux下创建spyder桌面图标的方法
linux下创建spyder桌面图标的方法 发布时间:2020-07-20 11:08:41 来源:亿速云 阅读:96 作者:清晨 小编给大家分享一下linux下创建spyder桌面图标的方法,希望大 ...
- linux rpm目录,Linux修改RPM的安装目录的方法
Linux系统下大多数人都是使用rpm -i xxxx.rpm命令来安装RPM包,这种情况下RPM会被安装在默认的目录当中.如果不想把RPM安装在这个目录下应该怎么办呢?下面就来介绍一下Linux如何 ...
- linux 自定义目录,linux – cron命令的自定义目录
我在Debian / Ubuntu上使用vixie cron.如何设置cron要读取的自定义目录?我想引导crontab运行在一系列文件中找到的命令,例如 /home/cron/*.cron 或完美 ...
- rm linux 复制目录,linux学习(四)复制(cp)移动(mv)删除(rm)查找(find)文件、文件夹操作、软硬链接的区别...
复制文件 cp命令用于复制文件到制定的目录 语法格式为: cp [选项] 源文件或目录 目标文件或目录 命令选项 含义 cp -d 当复制符号链接时,把目标文件或目录页建立为符号链接,并指向与源文件或 ...
最新文章
- 镁光ssd管理工具 linux,在 SSD 上使用 Btrfs 文件系统的相关优化
- easyui datagrid checkbox的相关属性整理
- window7共享xp或者2003的文件设置
- 2018 年,去百度面试 Java 后端的一次面试经历
- scws sphinx mysql_Sphinx+Scws 搭建千万级准实时搜索应用场景详解
- 拓展视野学习前端,我推荐这些
- linux 输出到文件 新,如何在Linux中将命令输出保存到文件
- flink的watermark简单理解
- java类方法不写权限就时default_Day11_final、权限、内部类
- 最长不下降子序列//序列dp
- 01-Axure9入门培训
- 零跑C01/S01/C11/T03维修手册电路图培训手册用户手册技术资料
- 彻底卸载McAfee Agent
- SPSS学习 (一)概述
- CentOS 7 之Helloworld with c
- 电脑屏幕黑屏的终极解决办法
- 不知道如何入门编程?最全在线教程网站汇总来了,还不赶快收藏
- 51单片机控制的自动感应调光、坐姿矫正智能台灯
- storm源码分析研究(十三)
- Tecplot中自定义函数