我检查了一些资源,但仍难以找到解释代码的线索。
$ find . -iname "*.dwp" -exec bash -c 'mv "$0" "${0%\.dwp}.html"' {} \;
$ find . -name ".DS_Store" -exec rm {} \;
更具体地说,-iname
和-name
之间的区别是什么?什么" -c"和"%"象征?
你能解释一下这两个命令吗?
答案 0 :(得分:1)
第一个:
-iname "*.dwp"
,指示find
命令查找名称与模式*.dwp
匹配的文件,忽略大小写,例如:./a.dwp
-exec expression {} \;
部分,执行命令bash -c 'mv "$0" "${0%\.dwp}.html"' {}
。 {}
将被每个文件的路径替换。表达式以分号结束。如果当前目录中有文件a.dwp
,则bash -c 'mv "$0" "${0%\.dwp}.html"' a.dwp
将执行。
bash -c 'mv "$0" "${0%\.dwp}.html"' {}:
-c
表示从字符串读取命令,不启动交互式shell。$0
是命令的参数,在此示例中为a.dwp
。${0%\.dwp}.html
是字符串操作,%
从结尾删除最短匹配,因此对于a.dwp
,从结尾删除.dwp
以获取文件名{{1}无延伸。所以命令是a
。
如果您了解第一个,那么第二个非常简单。