find exec命令中的变量

时间:2017-01-29 03:47:28

标签: bash

$ 1如何在此命令中工作?我找不到任何关于这在任何地方做什么的例子或文档。这来自一个问题'删除当前工作目录中的所有文件扩展名。'

find `pwd` -type f -exec bash -c 'mv "$1" "${1%.*}"' - '{}' \;

1 个答案:

答案 0 :(得分:6)

find要执行的字符串是

bash -c 'mv "$1" "${1%.*}"' - '{}'

对于找到的每个文件,find将使用找到的文件的路径名替换{}

bash -c 'mv "$1" "${1%.*}"' - '/path/to/filename.ext'
然后

bash执行mv "$1" "${1%.*}"$0设置为-(使其成为登录shell),$1设置为/path/to/filename.ext。在应用替换后,这导致

mv /path/to/filename.ext /path/to/filename

注意:find `pwd`是一种复杂的说法find .